vbs ShellExecute运行外部程序时如何判断外部程序执行成功与否
VBScript 中的 ShellExecute
函数虽然可以启动外部程序,但它并不会直接返回程序执行成功与否的明确信息。通常,它会立即返回,而不管目标程序是否运行完成。
ShellExecute
后,通过 WMI (Windows Management Instrumentation) 查询系统中的进程,查找目标程序的进程 ID。如果找到对应的进程,通常可以认为程序启动成功。
Dim WshShell, objWMIService, objProcess, strProcessName, intProcessID
Set WshShell = CreateObject("Wscript.Shell")
strProcessName = "notepad.exe" ' 要启动的程序
' 启动程序
WshShell.Run strProcessName, 0, True
' 等待一段时间后,查询进程
WScript.Sleep 2000 ' 等待2秒
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")
For Each proc In objProcess
If UCase(proc.Name) = UCase(strProcessName) Then
intProcessID = proc.ProcessID
WScript.Echo "进程 " & strProcessName & " 启动成功,进程 ID: " & intProcessID
Exit For
End If
Next
If intProcessID = 0 Then
WScript.Echo "进程 " & strProcessName & " 启动失败"
End If
ShellExecute
后,使用 WScript.Sleep
等待一段时间,再执行其他操作,假设这段时间内目标程序已经完成执行。Terminate
方法。判断外部程序执行成功与否的方法有多种,选择合适的方法取决于具体的需求。一般来说,结合 WMI 查询和等待机制是一种比较常用的方法。对于更复杂的场景,可以考虑使用第三方工具或自定义更复杂的逻辑。
重要提醒: 在实际应用中,需要根据具体的业务需求和系统环境来选择合适的方法。