我在vbscript中使用此代码段:
Set WSH = CreateObject("WScript.Shell")
cmd = "some command"
flag = WSH.Run(cmd, 0, true)
可以注意到,在.Run()
调用中,“WaitOnReturn”设置为“true”,因为我想知道外部程序何时完成,另外还有状态
问题是外部程序需要一些时间才能完成,我想弹出“请稍候......”MsgBox,但我不能这样,因为我将“WaitOnReturn”设置为“true”,我需要因为我需要结果从该计划中进行额外处理
有没有办法在外部程序执行时以某种方式显示这个MsgBox?
答案 0 :(得分:4)
很抱歉,我可以在执行之前调用MsgBox,Run() :尴尬:
编辑:
这里没有用户互动是一种解决方法(取自http://www.robvanderwoude.com/vbstech_ui_progress.php)
Function ProgressMsg( strMessage, strWindowTitle )
' Written by Denis St-Pierre
Set wshShell = WScript.CreateObject( "WScript.Shell" )
strTEMP = wshShell.ExpandEnvironmentStrings( "%TEMP%" )
If strMessage = "" Then
On Error Resume Next
objProgressMsg.Terminate( )
On Error Goto 0
Exit Function
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
strTempVBS = strTEMP + "\" & "Message.vbs"
Set objTempMessage = objFSO.CreateTextFile( strTempVBS, True )
objTempMessage.WriteLine( "MsgBox""" & strMessage & """, 4096, """ & strWindowTitle & """" )
objTempMessage.Close
On Error Resume Next
objProgressMsg.Terminate( )
On Error Goto 0
Set objProgressMsg = WshShell.Exec( "%windir%\system32\wscript.exe " & strTempVBS )
Set wshShell = Nothing
Set objFSO = Nothing
End Function
然后用:
调用它 ProgressMsg "Installing, Please wait.", "Some title"
以#终止它:
ProgressMsg "", "Some title"
答案 1 :(得分:-1)
我在另一个博客上得到了答案,基本上,我所要做的就是全局调整变量“ProgressMsg”。
由于