Дождитесь завершения программы - PullRequest
2 голосов
/ 04 сентября 2010

Чтобы отслеживать использование полосы пропускания и не загружать программы при запуске, я хочу запустить dumeter.exe, затем firefox.exe. Когда я выключаю firefox, он должен убить dumeter. *

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "c:\progra~1\dumeter\dumeter.exe"
WshShell.Run "c:\progra~1\mozill~1\firefox.exe

Требуется запускать taskkill только при закрытом firefox. Попытка использования файла bat, но иногда dumeter запускается и закрывается сам по себе, не ждет.

 WshShell.Run "taskkill /f /im dumeter.exe"  
 Set WshShell = Nothing

Ответы [ 2 ]

4 голосов
/ 04 сентября 2010

Вы можете дождаться завершения процесса, подписавшись на соответствующее событие WMI. Вот пример:

strComputer = "."
Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

''# Create an event query to be notified within 5 seconds when Firefox is closed
Set colEvents = oWMI.ExecNotificationQuery _
    ("SELECT * FROM __InstanceDeletionEvent WITHIN 5 " _
     & "WHERE TargetInstance ISA 'Win32_Process' " _
     & "AND TargetInstance.Name = 'firefox.exe'")

''# Wait until Firefox is closed
Set oEvent = colEvents.NextEvent

Более подробная информация здесь: Как запустить процесс, а затем дождаться его завершения, прежде чем завершать сценарий?

0 голосов
/ 29 октября 2017
Option Explicit

Const PROC_NAME = "<Process_You_Want_to_Check>"
Const SLEEP_INTERVAL_MS = 5000 '5 secs

Dim objWMIService
Dim colProcesses, objProcess, inteproc

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

inteproc = -1 'set in unknown state

Do Until inteproc = 0

Set colProcesses = objWMIService.ExecQuery(_
    "Select * from Win32_Process where Name='" & PROC_NAME & "'")
    inteproc = colProcesses.count

If inteproc > 0 then
WSCRIPT.ECHO "Process " & PROC_NAME & " is still runing, wait for " & SLEEP_INTERVAL_MS / 1000 & " seconds"
WScript.Sleep(SLEEP_INTERVAL_MS)

else
    wscript.echo "Process " & PROC_NAME & " Finished. Continue running scripts"

End If

Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...