(0 ) Mankubus , вот примеры:
Если хотим проверять перед запуском задачи, нет ли уже запущенной копии, то делаем примерно так:
Код VBS Set objService = GetObject("WinMgmts:\\.\Root\CIMV2")
Set colProcesses = objService.ExecQuery("S_elect * from Win32_Process WHERE Name='NOTEPAD.EXE'")
counter = 0
For Each objProcess in colProcesses
counter = counter + 1
Next
If counter < 1 Then
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%\notepad"
End If
Если хотим скрипт, который постоянно висит в памяти и убивает лишние процессы, то делаем примерно так:
Код VBS Set objService = GetObject("WinMgmts:\\.\Root\CIMV2")
Set objEventSource = objService.ExecNotificationQuery _
("S_elect * FROM __InstanceCreationEvent " & _
"WITHIN 1 WHERE (TargetInstance ISA 'Win32_Process' " &_
"AND TargetInstance.Name='NOTEPAD.EXE') ")
Do While true
Set objEvent = objEventSource.NextEvent
Set colProcesses = objService.ExecQuery("S_elect * from Win32_Process WHERE Name='NOTEPAD.EXE'")
counter = 0
For Each objProcess in colProcesses
counter = counter + 1
Next
Wscript.Echo counter
IF counter > 1 Then
objEvent.TargetInstance.Terminate
counter = counter - 1
end If
Loop
Изменено 01.09.11 10:20:50 по причине: добавление инфы