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
把事情做好。
我下面的代码运行没有错误。
但我需要它等到进程在此行被终止: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
把事情做好。