Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Мониторинг запущенных процессов

Ответить
Настройки темы
VBS/WSH/JS - Мониторинг запущенных процессов

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте! У меня есть два скрипта:

1. Мониторинг запуска процесса (для примера, калькулятора)

Код: Выделить весь код
Const ProcName = "calc.exe"
Set colEvents = GetObject("winmgmts:\\.\Root\CIMV2").ExecNotificationQuery( _
  "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' " & _
  "AND TargetInstance.Name = '" & ProcName & "'")  
do 
 Set objEvent = colEvents.NextEvent  
	MsgBox "Вы запустили процесс " & objEvent.TargetInstance.Name
loop
2. Мониторинг завершения процесса (для примера, того же калькулятора)

Код: Выделить весь код
Const ProcName = "calc.exe"
Set colEvents = GetObject("winmgmts:\\.\Root\CIMV2").ExecNotificationQuery( _
  "SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' " & _
  "AND TargetInstance.Name = '" & ProcName & "'")  
do  
set objEvent = colEvents.NextEvent  
	MsgBox "Вы закрыли процесс " & objEvent.TargetInstance.Name
loop
Если запускать каждый из них по отдельности, то скрипты отрабатывают нормально. Подскажите, как их объединить в один скрипт.

Отправлено: 09:02, 27-11-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


fontenette, Вы не написали главного — какова глобальная цель, что Вы хотите получить в конечном итоге?

Отправлено: 09:05, 27-11-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цель - мониторинг запуска и завершения определенного процесса. При его запуске выполнить действие (для примера в коде - показать сообщение), при его завершении выполнить другое действие. При этом может запускаться несколько копий процесса.

Отправлено: 09:10, 27-11-2014 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


fontenette, ой, подозреваю, что это далеко не всё.

Вот пример синхронной обработки (там несколько более сложная задача, но общий принцип тот же).

Вот пример асинхронной обработки:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strProcessName

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemSink


strProcessName = "notepad.exe"

strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set objSWbemSink       = WScript.CreateObject("WbemScripting.SWbemSink","Sink_")

objSWbemServicesEx.ExecNotificationQueryAsync objSWbemSink, _
	"SELECT * FROM __InstanceOperationEvent WITHIN 1 " & _
	"WHERE TargetInstance ISA 'Win32_Process' AND " & _
	"TargetInstance.Name = '" & strProcessName & "'"

WScript.Echo "Waiting for process..."

Do
	WScript.Sleep 100
Loop

objSWbemSink.Cancel

Set objSWbemSink       = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Sink_OnObjectReady(objSWbemObject, objSWbemAsyncContext)
	With objSWbemObject
		WScript.Echo Now(), vbTab, .Path_.Class, vbTab, .TargetInstance.Name, vbTab, .TargetInstance.ProcessID
	End With
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:32, 27-11-2014 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, спасибо, вы привели подходящие примеры.

Отправлено: 10:36, 28-11-2014 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Мониторинг запущенных процессов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Redhat/Fedora - zabbix мониторинг процессов windows ~user~ Общий по Linux 1 21-08-2014 15:54
VBS/WSH/JS - [решено] [решено] VBS: мониторинг процессов и уведомление на email novi Скриптовые языки администрирования Windows 33 17-01-2014 21:46
CMD/BAT - Проверка и перезапуск запущенных процессов 41275jur Скриптовые языки администрирования Windows 6 23-07-2013 14:23
CMD/BAT - Мониторинг и завершение вновь запущенных приложений God_Zilla Скриптовые языки администрирования Windows 3 13-11-2011 07:20
Разное - предел запущенных приложений? parovozfd Microsoft Windows Vista 3 18-07-2007 11:18




 
Переход