Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Проверка процесса с перезапуском (http://forum.oszone.net/showthread.php?t=318672)

maloibtc 11-09-2016 12:38 2667587

Проверка процесса с перезапуском
 
Всем привет.Ни как не могу найти относительно простой и понятный вариант проверки процесса в диспетчере задач и дальнейшее его закрытие.
В общем нужно такое решение:
Есть процесс рабочий firefox-01.exe
Нужно чтоб при запуске VBS проверял сначала наличие этого процесса,в случае если процесс есть то убивал его,и через сек 5-7 перепроверил 1 раз убился ли процесс или нет,если процесс убит то запустить программу.
Заранее благодарю=))Нужно срочно,скину на сижки деньжат кто напишет оптимальный вариант=))))

Iska 11-09-2016 13:02 2667597

Там искать нечего.
Код:

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 2667600

Цитата:

Цитата Iska
Там искать нечего.
Код: »

А можно сделать так:
Работает процесс,я запускаю скрипт vbs он ждет 3 сек перед проверкой на существование процесса,проверяет процесс если процесс работает то его убивает и ждет 5 сек,после перепроверяет и в случае если процесса нет запускает через 5 сек программу

Iska 11-09-2016 13:53 2667604

Цитата:

Цитата maloibtc
он ждет 3 сек перед проверкой на существование процесса »

Зачем?

Цитата:

Цитата maloibtc
если процесс работает »

А если нет?

Цитата:

Цитата maloibtc
и ждет 5 сек,после перепроверяет »

Зачем ждать и зачем перепроверять?

Цитата:

Цитата maloibtc
запускает через 5 сек »

Зачем через пять секунд?

maloibtc 11-09-2016 14:02 2667606

Цитата:

Цитата Iska
Цитата maloibtc:
он ждет 3 сек перед проверкой на существование процесса »
Зачем?
Цитата maloibtc:
если процесс работает »
А если нет?
Цитата maloibtc:
и ждет 5 сек,после перепроверяет »
Зачем ждать и зачем перепроверять?
Цитата maloibtc:
запускает через 5 сек »
Зачем через пять секунд? »

Дело в том что если одновременно запускаются 30-40 процессов или закрываются,остатки нескольких процессов уходят в фон и далее не гаятся.Так же задержка нужна для относительного баланса производительности и уменьшения нагрузки на процессор при запуске firefox.И при такой ситуации несколько браузеров не запускаются и выскакивает сообщение что данная программа уже запущена

Iska 11-09-2016 14:04 2667608

В итоге пришли к тому, с чего бы следовало начинать.

Опишите Вашу задачу.

maloibtc 11-09-2016 14:12 2667612

Цитата:

Цитата Iska
В итоге пришли к тому, с чего бы следовало начинать.
Опишите Вашу задачу. »

Извиняюсь))
У меня работает 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 то пишется сообщение что программа уже запущенна.

Iska 11-09-2016 14:58 2667625

Цитата:

Цитата maloibtc
где идет завершение процесса »

Неа. У Вас идёт «просьба» к приложению Firefox «завершить себя». И завершение приложения (не принудительное) может занимать много времени, особенно, если внутри него в этот момент крутится куча JScript-скриптов. Или очень много времени. Или не завершать вообще — если приложение тупо, на 100% занято обработкой.

Метод «.Terminate()» же класса «Win32_Process» не обращается к приложению, а всегда принудительно «снимает» процесс приложения.

Вас устроит принудительное завершение процесса Firefox (что не есть хорошо для профиля в долгосрочной перспективе) или же необходимо обычное, «мягкое» завершение приложения? Если выбираете последнее — всегда ли завершается при этом приложение (при условии, скажем, бесконечного ожидания завершения)?

maloibtc 11-09-2016 15:09 2667632

Цитата:

Цитата Iska
Неа. У Вас идёт «просьба» к приложению Firefox «завершить себя». И завершение приложения (не принудительное) может занимать много времени, особенно, если внутри него в этот момент крутится куча JScript-скриптов. Или очень много времени. Или не завершать вообще — если приложение тупо, на 100% занято обработкой.
Метод «.Terminate()» же класса «Win32_Process» не обращается к приложению, а всегда принудительно «снимает» процесс приложения.
Вас устроит принудительное завершение процесса Firefox (что не есть хорошо для профиля в долгосрочной перспективе) или же необходимо обычное, «мягкое» завершение приложения? Если выбираете последнее — всегда ли завершается при этом приложение (при условии, скажем, бесконечного ожидания завершения)? »

А что посоветуете?
Сделать остановку js и после вызывать VBS?


Время: 14:58.

Время: 14:58.
© OSzone.net 2001-