2011-12-20 10 views
3

を実行中:表示メッセージダイアログ私はVBScriptでこのスニペットを使用

Set WSH = CreateObject("WScript.Shell") 
cmd = "some command" 
flag = WSH.Run(cmd, 0, true) 

それは.Run()呼び出しで、注目されるように、私は時に外部プログラムが終了するかを知りたいと、「WaitOnReturn」が「真」に設定されていますそれにステータスがあります

問題は、外部プログラムが完了するまでに時間がかかり、「待ってください...」MsgBoxがポップアップしたいのですが、「WaitOnReturn」を「true」に設定しています追加の処理のためにそのプログラムの結果が必要なので必要です

外部プログラムが実行されている間、このMsgBoxを何とか表示する方法はありますか?

答えて

4

申し訳ありませんが、それは )私はファイル名を指定して実行(、単に実行する前に、メッセージボックスを呼び出すことができることを私に転落:恥ずかしい:


編集:ユーザーの操作なしのため

ここから取られた1つの回避策は(あります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"

+0

私たちはすべて見落としがありません。私はあなたにそれを指摘することを考えましたが、コマンドを開始する前にMsgBoxをクリックすることに依存したくないと思っていました。 – Abbas

+0

もちろんあります:)私は答えを更新しました – theta

-2

は、基本的に、私がしなければならなかったすべては、グローバル変数「ProgressMsg」を薄暗くしました。

ありがとうございます

関連する問題