Подскажите, как запустить на VBScript процесс, и получить его код завершения?
Нашел, как запустить процесс и дождаться его завершения при помощи WMI, но не смог найти его ExitCode
' Для Win32 процессов
Sub ExecuteAndWait(CmdLine, CurrDir)
Dim strComputer,objWMIService,ExitFlag,res
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
intProcessID=""
res=objWMIService.Create(CmdLine, CurrDir, null, intProcessID)
'res=objWMIService.Create("notepad.exe", CurrDir, null, intProcessID)
'WScript.Echo "res=" &res &" intProcessID='" &intProcessID &"'"
If res<>0 Then
WScript.Echo "Error Execute" &CmdLine
Wscript.Echo "Into " &CurrDir
Exit Sub
End If
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService.ExecNotificationQuery _
("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")
ExitFlag=false
Do Until ExitFlag
Set objLatestProcess = colMonitoredProcesses.NextEvent
If objLatestProcess.TargetInstance.ProcessID = intProcessID Then
ExitFlag = true
'WScript.Echo "ExitCode=" & objLatestProcess.TargetInstance.ExitCode - нет такого свойства :(
End If
Loop
'Wscript.Echo "Process has been terminated."
End Sub
Еще один момент — запускаю из консоли (через cscript), и хотелось бы, чтобы порождаемый процесс (тоже консольный, а именно — компилятор) не порождал собственную консоль.
Т.к. запускаю через WMI, то мою консоль он не берет, т.к. порождается вообще левой прогой (wmiprvse.exe)