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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Создание скрипта по перезапуску краш-приложения (http://forum.oszone.net/showthread.php?t=321974)

vecheria@vk 23-12-2016 09:21 2697841

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

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

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

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

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

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

vecheria@vk 23-12-2016 09:57 2697852

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

Creat0R 23-12-2016 09:57 2697853

Код:

$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 2697859

окно ошибки прибить тоже нужно
Код:

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


vecheria@vk 23-12-2016 10:44 2697861

Mike909, спасибо, окно ошибки прибивать не обязательно, она все равно циклическая (при нажатии ОК выскакивает похожая) . Убивание процесса мне поможет.


Время: 07:55.

Время: 07:55.
© OSzone.net 2001-