![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Мониторинг запущенных процессов |
|
VBS/WSH/JS - Мониторинг запущенных процессов
|
Новый участник Сообщения: 3 |
Здравствуйте! У меня есть два скрипта:
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 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
|
Профиль | Отправить PM | Цитировать fontenette, Вы не написали главного — какова глобальная цель, что Вы хотите получить в конечном итоге?
|
Отправлено: 09:05, 27-11-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Цель - мониторинг запуска и завершения определенного процесса. При его запуске выполнить действие (для примера в коде - показать сообщение), при его завершении выполнить другое действие. При этом может запускаться несколько копий процесса.
|
Отправлено: 09:10, 27-11-2014 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Iska, спасибо, вы привели подходящие примеры.
|
|
Отправлено: 10:36, 28-11-2014 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|