1

Тема: VBScript: слежение за существованием процесса

Пример отслеживает создание процесса "notepad.exe" и выдаёт сообщение о его существовании (PID процесса). Пример демонстрирует использование объекта SWbemRefresher.

Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colItems = objRefresher.AddEnum(objService, "Win32_Process").objectSet
While True
    objRefresher.Refresh
    For Each objItem in colItems
        If InStr(objItem.ExecutablePath, "notepad.exe") Then
            Wscript.Echo "notepad.exe PID " & objItem.ProcessId
        End If
    Next
    Wscript.Sleep 1000
Wend
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: VBScript: слежение за существованием процесса

Пример запускает процесс "notepad.exe", следит за его существованием и выдаёт сообщение о прекращении его работы. Код обрабатывает события удаления процессов с помощью WMI.

Set WshShell = CreateObject ("WSCript.shell")
PID = WshShell.Exec("notepad.exe").ProcessID

Set WMI = GetObject("winmgmts:\\.\root\cimv2")
Set colProcesses = WMI.ExecNotificationQuery _
("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")
Do Until 1 = 2
    Set objProcess = colProcesses.NextEvent
    If objProcess.TargetInstance.ProcessID = PID Then
       Exit Do
    End If
Loop
MsgBox "Процесса notepad.exe (PID " & PID & ") больше нет."

Автор идеи - ingvar68.

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