Запуск приложения на VBScript (WSHost), ExitCode
От: 2Cobalt  
Дата: 25.04.08 14:40
Оценка:
Подскажите, как запустить на 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)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.