Set wshShell = WScript.CreateObject (\"WSCript.shell\")
wshshell.run \"runas ...\"
How do I get the results and display in a MsgBox
This is a modified version of Nilpo's answer that fixes the issue with WshShell.Exec
being asynchronous. We do a busy-loop waiting until the shell's status is no longer running, and then we check the output. Change the command-line argument -n 1
to a higher value to make ping
take longer, and see that the script will wait longer until completion.
(If anyone has a true asynchronous, event-based solution to the problem, then please let me know!)
Option Explicit
Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2
Dim shell : Set shell = CreateObject("WScript.Shell")
Dim exec : Set exec = shell.Exec("ping.exe 127.0.0.1 -n 1 -w 500")
While exec.Status = WshRunning
WScript.Sleep 50
Wend
Dim output
If exec.Status = WshFailed Then
output = exec.StdErr.ReadAll
Else
output = exec.StdOut.ReadAll
End If
WScript.Echo output