Показать диалог сообщения при выполнении - PullRequest
3 голосов
/ 20 декабря 2011

Я использую этот фрагмент в VBScript:

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

Как можно заметить, при вызове .Run() «WaitOnReturn» устанавливается в «true», поскольку я хочу знать, когда внешняя программа завершает свою работу и, кроме того, ее статус

Проблема в том, что внешней программе нужно некоторое время, чтобы закончить, и я хочу вывести MsgBox «Пожалуйста, подождите ...», но я не могу так сделать, так как я устанавливаю «WaitOnReturn» на «true», что мне нужно, так как мне нужен результат из этой программы для дополнительной обработки

Можно ли как-то показать этот MsgBox во время выполнения внешней программы?

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Извините, мне пришло в голову, что я могу вызвать MsgBox непосредственно перед выполнением, Run (): embarrassed:


Edit:

без взаимодействия с пользователем, вот один обходной путь (взято из 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 голосов
/ 19 августа 2013

Мне дали ответ в другом блоге, по сути, все, что мне нужно было сделать, это уменьшить значение переменной "ProgressMsg" в глобальном масштабе.

Спасибо

...