我需要一个可以环绕应用程序的 vb 脚本,该脚本将保持打开状态直到应用程序完成。我希望能够调用以下命令
“setup.exe /qb /I Autocad2010.ini /语言 en-us”
但我需要 vb 脚本保持运行直到安装完成。
有谁可以帮忙解决这个问题?
提前感谢
答案1
更新后的版本
下面将执行您的安装程序,然后等待不再有实例setup.exe
运行。您可以设置最大超时值(这样它就不会永远挂起)。
请注意,这无法检测设置是否完成,只与进程是否setup.exe
正在运行有关。这是一个细微的区别,但却很重要。
Option Explicit
Const PROC_NAME = "setup.exe"
Const RUN_CMD = "setup.exe /qb /I Autocad2010.ini /language en-us"
Const SLEEP_INTERVAL_MS = 1000
Const WAIT_TIMEOUT_MS = 1500000 ' = 1000 * 60 * 25 ms = 25 mins
Dim objWshShell, objWMIService
Dim colProcesses, objProcess
Dim intWaited, blnProcessTerminated
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run RUN_CMD
intWaited = 0
blnProcessTerminated = False
While intWaited < WAIT_TIMEOUT_MS And Not blnProcessTerminated
Set colProcesses = objWMIService.ExecQuery(_
"Select * from Win32_Process where Name='" & PROC_NAME & "'")
blnProcessTerminated = True
For Each objProcess In colProcesses
blnProcessTerminated = False
Next
WScript.Sleep(SLEEP_INTERVAL_MS)
intWaited = intWaited + SLEEP_INTERVAL_MS
Wend
这相对简单:
Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run "setup.exe /qb /I Autocad2010.ini /language en-us", 1, True
该方法的参数Run
有更详细的描述在 MSDN 网站上. 最重要的是,True
导致脚本等待直到setup.exe
终止。