Показать полную графическую версию : Проверка процесса с перезапуском
maloibtc
11-09-2016, 12:38
Всем привет.Ни как не могу найти относительно простой и понятный вариант проверки процесса в диспетчере задач и дальнейшее его закрытие.
В общем нужно такое решение:
Есть процесс рабочий firefox-01.exe
Нужно чтоб при запуске VBS проверял сначала наличие этого процесса,в случае если процесс есть то убивал его,и через сек 5-7 перепроверил 1 раз убился ли процесс или нет,если процесс убит то запустить программу.
Заранее благодарю=))Нужно срочно,скину на сижки деньжат кто напишет оптимальный вариант=))))
Там искать нечего.
Option Explicit
Dim objSWbemObjectEx
For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'firefox-01.exe'")
objSWbemObjectEx.Terminate
Next
WScript.CreateObject("WScript.Shell").Run """C:\Мои проекты\firefox-01.exe""", 1, False
WScript.Quit 0
maloibtc
11-09-2016, 13:21
Там искать нечего.
Код: »
А можно сделать так:
Работает процесс,я запускаю скрипт vbs он ждет 3 сек перед проверкой на существование процесса,проверяет процесс если процесс работает то его убивает и ждет 5 сек,после перепроверяет и в случае если процесса нет запускает через 5 сек программу
он ждет 3 сек перед проверкой на существование процесса »
Зачем?
если процесс работает »
А если нет?
и ждет 5 сек,после перепроверяет »
Зачем ждать и зачем перепроверять?
запускает через 5 сек »
Зачем через пять секунд?
maloibtc
11-09-2016, 14:02
Цитата maloibtc:
он ждет 3 сек перед проверкой на существование процесса »
Зачем?
Цитата maloibtc:
если процесс работает »
А если нет?
Цитата maloibtc:
и ждет 5 сек,после перепроверяет »
Зачем ждать и зачем перепроверять?
Цитата maloibtc:
запускает через 5 сек »
Зачем через пять секунд? »
Дело в том что если одновременно запускаются 30-40 процессов или закрываются,остатки нескольких процессов уходят в фон и далее не гаятся.Так же задержка нужна для относительного баланса производительности и уменьшения нагрузки на процессор при запуске firefox.И при такой ситуации несколько браузеров не запускаются и выскакивает сообщение что данная программа уже запущена
В итоге пришли к тому, с чего бы следовало начинать.
Опишите Вашу задачу.
maloibtc
11-09-2016, 14:12
В итоге пришли к тому, с чего бы следовало начинать.
Опишите Вашу задачу. »
Извиняюсь))
У меня работает 130-150 firefox с imacros скриптами.
При завершении цикла imacros вызывает VBS где идет завершение процесса с последующим запуском firefox со скриптом imacros.
Скрипт vbs выглядит так :
Dim PatchJs, PatchFol, objShell
PatchJs = "01"
PatchFol = "tk"
Set objShell = CreateObject("Wscript.Shell")
WScript.Sleep 3000
objShell.Run "taskkill /IM firefox-"+PatchFol+"-"+PatchJs+".exe", 0, true
WScript.Sleep 13000
objShell.run """C:/ff/"+PatchFol+"-"+PatchJs+"/FirefoxPortable.exe""file:///C:/loader.html?m="+PatchFol+"/"+PatchJs+".js", 0, false
WScript.Sleep 3000
Set objShell=Nothing
Очень часто если нет задержек в VBS,firefox полностью не завершается а уходит в фон процесс (Для этого мне и нужна повторная проверка существования процесса),и когда VBS запускает firefox то пишется сообщение что программа уже запущенна.
где идет завершение процесса »
Неа. У Вас идёт «просьба» к приложению Firefox «завершить себя». И завершение приложения (не принудительное) может занимать много времени, особенно, если внутри него в этот момент крутится куча JScript-скриптов. Или очень много времени. Или не завершать вообще — если приложение тупо, на 100% занято обработкой.
Метод «.Terminate()» же класса «Win32_Process» не обращается к приложению, а всегда принудительно «снимает» процесс приложения.
Вас устроит принудительное завершение процесса Firefox (что не есть хорошо для профиля в долгосрочной перспективе) или же необходимо обычное, «мягкое» завершение приложения? Если выбираете последнее — всегда ли завершается при этом приложение (при условии, скажем, бесконечного ожидания завершения)?
maloibtc
11-09-2016, 15:09
Неа. У Вас идёт «просьба» к приложению Firefox «завершить себя». И завершение приложения (не принудительное) может занимать много времени, особенно, если внутри него в этот момент крутится куча JScript-скриптов. Или очень много времени. Или не завершать вообще — если приложение тупо, на 100% занято обработкой.
Метод «.Terminate()» же класса «Win32_Process» не обращается к приложению, а всегда принудительно «снимает» процесс приложения.
Вас устроит принудительное завершение процесса Firefox (что не есть хорошо для профиля в долгосрочной перспективе) или же необходимо обычное, «мягкое» завершение приложения? Если выбираете последнее — всегда ли завершается при этом приложение (при условии, скажем, бесконечного ожидания завершения)? »
А что посоветуете?
Сделать остановку js и после вызывать VBS?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.