Войти

Показать полную графическую версию : Создание скрипта по перезапуску краш-приложения


vecheria@vk
23-12-2016, 09:21
На крупном торговом предприятии есть некий старый софт, который сейчас уже не дорабатывается, но крайне необходим для работы.

Он регулярно крашится.

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

Хочется упростить себе жизнь, чтобы AutoIT ждал окна об ошибке, при его появлении - перезапускал процесс клиента самостоятельно. Таким образом я высвобожу пару десятков человеко-часов в год.

Я пробовал реализовать *.bat с taskkill'ом, который периодически проверял-бы появление окна с определенным заголовкам, и если обнаруживал - то убивал его и перезапускал определенный процесс, но ничего не вышло, т.к. окно с русским заголовком (с кодировками я разобрался, батник точно должен был видеть "русское" окно, но не сработало)

Для любителей картинок - как только лично выловлю ошибку - прикреплю в тему.
Спасибо за ваши идеи и предложения!

vecheria@vk
23-12-2016, 09:57
Так, похожие вопросы нашел на форуме, сейчас буду разбираться. Если получится - напишу.

Creat0R
23-12-2016, 09:57
$sError_Win = 'Crash window' ;Здесь желательно указать класс окна (узнать с помощью Au3Info Tool)
$sProgName = 'Proga.exe' ;Имя процесса программы
$sProgPath = 'C:\Proga.exe' ;Путь к программе

While 1
Sleep(10)

If WinExists($sError_Win) Then
ProcessClose($sProgName)
Run($sProgPath)
EndIf
WEnd

Mike909
23-12-2016, 10:41
окно ошибки прибить тоже нужно

...
$handle = WinGetHandle($sError_Win) ; пример $sError_Win = "[Class:Notepad]"
WinKill($handle)
...

vecheria@vk
23-12-2016, 10:44
Mike909, спасибо, окно ошибки прибивать не обязательно, она все равно циклическая (при нажатии ОК выскакивает похожая) . Убивание процесса мне поможет.




© OSzone.net 2001-2012