VB6:如何等待命令执行

VB6: How to wait for a command to execute

我下面的代码运行没有错误。

但我需要它等到进程在此行被终止:WshShell.Exec "TASKKILL /F /IM " & EngineRun.ProcessID,然后再显示它已终止的消息框。

Option Explicit

Dim WshShell As Object
Dim EngineRun As Object

Sub main()

Set WshShell = CreateObject("WScript.Shell")
Set EngineRun = WshShell.Exec("notepad.exe")

MsgBox EngineRun.ProcessID

WshShell.Exec "TASKKILL /F /IM " & EngineRun.ProcessID

MsgBox EngineRun.ProcessID & (" terminated")

End Sub

感谢您的帮助

您可以改用 Run 方法吗?参见 MSDN。它支持一个 bWaitOnReturn 参数:

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn]) 

因此您的代码如下所示:

WshShell.Run "TASKKILL /F /IM " & EngineRun.ProcessID,4 , True
Set objWMIService = GetObject("winmgmts:\.\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")

For Each objItem in colItems
    'msgbox objItem.ProcessID & " " & objItem.CommandLine
    If objItem.name = "Calculator.exe" then objItem.terminate
Next

把事情做好。