Hejsa jambazz Her er et script der checker om en applikation er lukket....du skal bare indsætte en if stament hvor det andet script skal udføres når programmet ikke er aktivt længere.
Her er scriptet:
On Error Resume Next If WScript.Arguments.Count <> 1 Then WScript.Echo "Waits for an application to shut down. Usage:" & vbCrLf & Ucase(WScript.ScriptName) & "
""notepad.exe""" & vbCrLf & "Where ""notepad.exe"" is the executable name of the application you are waiting for." Else blnRunning = True Do While blnRunning = True Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select Name from Win32_Process where Name='" & Wscript.Arguments(0)
& "'",,48) blnRunning = False For Each objItem in colItems blnRunning = True Next WScript.Sleep 500 Loop End If
Ok, det her bliver for kryptisk. Lad mig sætte opgaven op fuldstændigt som den kunne være:
Jeg trykker på en genvej på skrivebordet som peger på en cmd fil, eller på et vbs script alt efter hvad er smartest. Dette skal starte et program, fx c:\notepad.exe, og når dette program afslutttes, skal et andet script eksekveres automatisk, fx c:\script.vbs.
Der skal ikke poppe den der "WScript.Echo "Waits for an application to shut down. " frem :o)
Ahh tusind tak maximus! :) Jeg var vist lidt ude af den før, men nu forstår jeg hvordan scriptet skal køre, og det virker som en DRØM! :D Jubiiiiiiiiiiiiii nu tager jeg snart fri :D
Jeg ved ikke om jeg kan paste det herind på ordentlig facon, men jeg prøver :)
En genvej til vbs scriptet ser således ud: c:\lol.vbs "calc.exe"
lol.vbs: ENG_Load()
set shell = wscript.createobject("wscript.shell") shell.run "c:\calc.exe"
If WScript.Arguments.Count <> 1 Then WScript.Echo "Venter på at calc lukker ned før den eksekverer DAN_Load(). Metode:" & vbCrLf & Ucase(WScript.ScriptName) & " ""indsætfilnavnher.exe""" & vbCrLf & "Hvor ""indsætfilnavnher.exe"" er navnet på den eksekverbare fil du venter på lukker ned." Else blnRunning = True Do While blnRunning = True Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select Name from Win32_Process where Name='" & Wscript.Arguments(0) & "'",,48) blnRunning = False For Each objItem in colItems blnRunning = True Next WScript.Sleep 500 Loop End If
If WScript.Arguments.Count = 1 Then DAN_Load() WScript.Echo "Danske regional indstillinger" End If
// Men jeg fatter ikke hvad det der WMIService gør, det der root\cimv2 forstår jeg heller ikke en dyt af. ENG_Load og DAN_Load er to funktioner som ændrer nøgler i registreringsdatabasen. Så jeg har faktisk bare kopieret al din kode, og så kørte det! :)
Nå ja, det er fordi jeg kører et program som kræver at man har engelske regional options, pga dato formatteringen i access databasen. Derfor skal jeg altid huske at ændre til engelsk indstillinger før jeg starter programmet, og tilbage til danske når jeg lukker det. Det behøves jeg ikke længere :D Dovenskaben længe leve haha! :D
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.