Войти

Показать полную графическую версию : Автоматический перезапуск программы


alleo
20-02-2011, 13:56
Есть проблема - имеется программа, работает хорошо, но имеет обыновение вылетать, причём именно когда рядом нет никого.
Можно ли сделать типа скрипт, запускающий прогу после вылета? Через запланированные задания не выходит - там время ставить надо, а кто её знает - когда она вылетит! Или может существуют другие программы для этой цели?

Petya V4sechkin
20-02-2011, 15:58
alleo, пример VBS-скрипта:
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
WshShell.Run "notepad.exe", 1, True
Loop Until False

"Бессмертный" блокнот (скрипт запускает его, ждет завершения и запускает снова). Для выхода из бесконечного цикла - завершить процесс wscript.exe (в принципе, можно вставить и условие какое-нибудь).

alleo
20-02-2011, 17:53
Спасибо, конечно, только чего дальше с этим делать?

Petya V4sechkin
20-02-2011, 17:57
alleo, указать в скрипте полное имя (включая путь) EXE-файла вашей программы, сохранить с расширением .VBS и запустить.

alleo
20-02-2011, 18:39
Спасибо, всё заработало пока - а я-то его в ехе сохранял...
Не знаю как выйдет - тут фишка такая, что прога не просто вылетает, а с ошибкой, ну и висит в процессах, пока ОК не щёлкнешь!

Petya V4sechkin
20-02-2011, 18:54
прога не просто вылетает, а с ошибкой, ну и висит в процессах, пока ОК не щёлкнешь!
Это полностью меняет дело (предложенный мной вариант не подходит).
Автоматическое нажатие кнопок можно реализовать с помощью AutoIt (http://forum.oszone.net/forum-103.html) (там и спросите).

alleo
21-02-2011, 17:21
Поймал вылет - процесс DWWIN.EXE выводит окно с ошибкой. Можно ли добавить в скрипт команду на завершение этого процесса, а потом уже запуск моей программы, т.е. в какое место вставить ProcessClose("dwwin.exe")

alleo
22-02-2011, 07:43
Частично проблема решена - окно с ошибкой убирается утилитой catcher, потом скрипт срабатывает, но это всё-таки временное решение, хотелось бы одним скриптом выполнять! Задержка примерно 2сек до перезапуска, зачастую это плохо, а иногда критично! Скрипт побыстрее выполнял бы процесс, я так думаю...

severagent007
26-02-2011, 15:40
Поймал вылет - процесс DWWIN.EXE »попробуй отключить отчёт об ошибках и отключить др. Ватсона, не, точно - лучше удалить раздел реестра его и перезагрузить(ничего страшного, две строчки и + освобождение метра оперативки, но сохранить их, канешно), и тогда сообщения не будет, кстати так можно избавлятся от зависона винды при ошибках программ (когда создаётся дамп и лог, после чего dwwin ломится в нет скорей пожаловаться папочке Биллу), но лучший вариант - конечно исправить любой ценой зависоны и ошибки программ, кстати при помощи дампов и логов этого же Др. Ватсона( может оказаться пустяком) :coffee:

alleo
27-02-2011, 07:39
severagent007, а не пойдёт ли в этом случае просто авто перезагрузка Винды в случае ошибки, а если и автоперезагрузку отключить - полный зависон?

severagent007
27-02-2011, 13:51
Я совсем не об этом, не перезагрузка при критических ошибках(стоп-ошибки, BSOD), а о этом:что прога не просто вылетает, а с ошибкой, ну и висит в процессах, пока ОК не щёлкнешь! »окно с ошибкой убирается утилитой catcher »удалить раздел реестра его и перезагрузить(ничего страшного, две строчки и + освобождение метра оперативки, но сохранить их, канешно), и тогда сообщения не будет »
Др.Ватсон не занимается стоп ошибками, а ошибками программ. Если отключить перезагрузку при ошибках системы, зависона не будет т.к. система уже не работает, и появится синий экран с выводом информации - это совсем не то, что у тебя. Это можно выключать при постоянных падениях системы, чтобы винда успевала сделать больший дамп памяти(для устранения критических ош.) или посмотреть в синем экране инфу о файле, драйвере, номер бсода.
У тебя же совсем другое - не стоп ошибка. Удаляешь [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug] папку из реестра(перед этим делаешь экспорт в файл) и не будет окна сообщения от Ватсона, не надо жмать окей. Попробуй, если окно будет опять появляться - просто запустишь тот файл и вернёш запись в реестр
:bow:

sp_shestakov@vk
24-05-2012, 21:21
а можно ли как-то доработать этот скрипт и сделать запуск спустя секунд 10?Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
WshShell.Run "notepad.exe", 1, True
Loop Until False »

Petya V4sechkin
24-05-2012, 21:39
запуск спустя секунд 10?
Set WshShell = WScript.CreateObject("WScript.Shell")
Do
WshShell.Run "notepad.exe", 1, True
WScript.Sleep 10000
Loop Until False




© OSzone.net 2001-2012