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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Мониторинг процесса в диспетчере задач и запуск его в случае отсутствия

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


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

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


Добрый день.

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

процесс 'iexplore.exe' с ключом '-k'

вмешательство пользователей в диспетчер задач отсутствует.

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

Отправлено: 12:12, 06-12-2011

 

Аватара для Wu-Tang

Ветеран


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

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


Iska,
но проверки то не будет, запущен ли процесс
и как сказал Fantastish, накладываться будет каждый раз

проверил запуск поверх запущенного процесса, главное окно тогда вылазит поверх всех окон.

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 13:07, 29-12-2015 | #21



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

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


Ветеран


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

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


Цитата Wu-Tang:
Iska,
но проверки то не будет, запущен ли процесс
и как сказал Fantastish, накладываться будет каждый раз »
Почему у меня не накладывается?

Цитата Wu-Tang:
проверил запуск поверх запущенного процесса, главное окно тогда вылазит поверх всех окон. »
Так Вы «процесс» запускайте в первый раз именно как задачу из «Назначенных заданий». Тогда никакого повторного запуска не будет, пока не закрыто приложение. Или опять я не так понимаю?

Отправлено: 15:53, 29-12-2015 | #22


Аватара для Wu-Tang

Ветеран


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

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


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

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 21:13, 29-12-2015 | #23


Ветеран


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

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


Wu-Tang, так, теперь ясно. Насколько я понимаю, само приложение даже при указании запускать в свёрнутом окне тупо разворачивает своё окно до нормального состояния, и тут ничего не поделаешь.

Могу тогда разве что предложить скрипт, который будет сам запускать процесс, следить за ним, и при его завершении — тут же запускать новый экземпляр приложения (т.н., «псевдо-неубиваемый» процесс). И Вы будете помещать в автозагрузку уже ярлык не на приложение, а на этот скрипт.

Попробуйте так:
Код: Выделить весь код
Option Explicit

Const SW_SHOWMINNOACTIVE = 7

Dim objSWbemObjectEx
Dim lngProcessID


With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	Set objSWbemObjectEx = .Get("Win32_ProcessStartup").SpawnInstance_
	objSWbemObjectEx.ShowWindow = SW_SHOWMINNOACTIVE

	Do
		If .Get("Win32_Process").Create( _
			"""C:\Program Files (x86)\TeamViewer\TeamViewer.exe""", Null, objSWbemObjectEx, lngProcessID _
		) = 0 Then
			
			.ExecNotificationQuery( _
				"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE " & _
				"TargetInstance ISA 'Win32_Process' AND " & _
				"TargetInstance.ProcessID = '" & CStr(lngProcessID) & "'").NextEvent
		Else
			' Не удалось запустить процесс
			Exit Do
		End If
	Loop
	
	Set objSWbemObjectEx = Nothing
End With

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:45, 30-12-2015 | #24


Аватара для Wu-Tang

Ветеран


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

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


Iska,
во, спасибо, все работает.

-------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!


Отправлено: 01:35, 06-01-2016 | #25


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


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

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


Код: Выделить весь код
Option Explicit

Dim lngProcessID

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	Do
		If .Get("Win32_Process").Create( _
			"""C:\Program Files\Internet Explorer\iexplore.exe"" -k ""file://C:\WINDOWS\Help\Tours\htmlTour\default.htm""", _
			Null, Null, lngProcessID) = 0 Then
			
			.ExecNotificationQuery( _
				"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE " & _
				"TargetInstance ISA 'Win32_Process' AND " & _
				"TargetInstance.ProcessID = '" & CStr(lngProcessID) & "'").NextEvent
		Else
			' Не удалось запустить процесс
			Exit Do
		End If
	Loop
End With

WScript.Quit 0
Как надо модифицировать код если программа firefox запускается посредством bat с параметром? (и надо проверять запущен ли firefox и если нет - запускать с параметром )
Код: Выделить весь код
cd " C:\Program Files (x86)\Mozilla Firefox"
start firefox imacros://run/?m=main.js
или что бы проверялась одна прога (firefox) а запускалась другая (bat файл)
Спасибо

Последний раз редактировалось selftrips.ru, 01-08-2016 в 16:59.


Отправлено: 16:52, 01-08-2016 | #26


Ветеран


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

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


Цитата selftrips.ru:
если программа firefox запускается посредством bat с параметром? »
Покажите код пакетного файла. Возможно, он и не понадобится.

Отправлено: 18:26, 01-08-2016 | #27


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


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

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


написал, это как раз bat
Код: Выделить весь код
cd " C:\Program Files (x86)\Mozilla Firefox"
start firefox imacros://run/?m=main.js

Отправлено: 04:45, 04-08-2016 | #28


Ветеран


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

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


selftrips.ru, попробуйте так:
Код: Выделить весь код
Option Explicit

Dim lngProcessID

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	Do
		If .Get("Win32_Process").Create( _
			"""C:\Program Files (x86)\Mozilla Firefox\firefox.exe"" imacros://run/?m=""main.js""", _
			Null, Null, lngProcessID) = 0 Then
			
			.ExecNotificationQuery( _
				"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE " & _
				"TargetInstance ISA 'Win32_Process' AND " & _
				"TargetInstance.ProcessID = '" & CStr(lngProcessID) & "'").NextEvent
		Else
			' Не удалось запустить процесс
			Exit Do
		End If
	Loop
End With

WScript.Quit 0
P.S. Firefox уже есть в x64-версии.
P.P.S. С вышедшей вчера версией могут быть проблемы из-за начала ограниченной поддержки ей многопроцессного режима.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:07, 04-08-2016 | #29


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


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

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


Цитата Iska:
selftrips.ru, попробуйте так: »
Своде работает. Спасибо.
А еще более сложную задачу можно решить?
Имеется 2 разных процесса firefox, каждый запущен со своего профиля и со своей строкой параметров, например:
firefox.exe imacros://run/?m=macros1.js -p profil1 -no-remote
firefox.exe imacros://run/?m=macros2.js -p profil2 -no-remote,
где macros1.js, macros2.js imacrocs для каждого профиля. (вообще macros1 иmacros2 могут иметь одинаковые названия, так как каждый лежит в папке своего профиля)
profil1 , profil2 название профилей.

Можно организовать контроль "запущенности" именно firefox определенного профиля, и при его отсутствии запускать с нужного профиля с нужной строкой параметров (при этом может выполняьться firefox другого профиля)
Если это возможно, как контролировать оба запуска?



P.S. "Firefox уже есть в x64-версии." А что дает переход на 64 битную версию?

Отправлено: 14:41, 04-08-2016 | #30



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - как понизить приоритет процесса если его нет в диспетчере задач? Firiat Microsoft Windows 2000/XP 9 22-08-2010 00:58
[решено] Проверка наличия процесса в Диспетчере задач Hawk37 AutoIt 1 05-03-2010 16:37
Любой язык - [решено] Скрипт который бы запускал 2 процесса и в случае убийства одного убивал бы и другой iDrug Скриптовые языки администрирования Windows 7 12-10-2009 19:08
CMD/BAT - [решено] Создание текстового файла при условии его отсутствия в папке spilberg Скриптовые языки администрирования Windows 1 12-07-2009 15:58
Разное - Мониторинг и трассировка процесса выключения системы. medved26 Microsoft Windows 2000/XP 1 06-10-2008 15:34




 
Переход