Что нового

Атоматический запуск скрипта при ошибке

prokazzza

Новичок
Сообщения
160
Репутация
2
Подскажите что нужно добавить в скрипт если вдруг скрипт выдал ошибку и выгрузился, чтобы он автоматом загрузился снова.
 

Arei

Скриптер
Сообщения
938
Репутация
115
ты намекаешь на автозагрузку?напиши подробнее.
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Ну к примеру есть скрипт, в нем прописан цикл, работает целый день, вдруг случайно он отключился из-за какой-нить ошибки, есть возможность запустить его автоматом снова??
 

Arei

Скриптер
Сообщения
938
Репутация
115
можно сделать вторую прогармму которая всё время проверяет,если запущена первая программа.


Код:
While 1
	IF ProcessExists("1.exe")=0 Then
	Run("1.exe")
EndIf 
Wend
 

VladUs

Скриптер
Сообщения
621
Репутация
180
Посмотрите здесь Только дочитайте до конца.

Arei Вы ничего не забыли в этой конструкции ? ;)
Код:
While 1
    IF ProcessExists("1.exe")=0 Then
    Run("1.exe")
Wend
 

Arei

Скриптер
Сообщения
938
Репутация
115
Вы намекаете на полный путь к файлу, или что?
 

Arei

Скриптер
Сообщения
938
Репутация
115
В браузере писал, и что то пропустил.Спасибо.
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Спасибо, но а другой возможности для автоматического перезапуска скрипта нету? Мож 2 также вылетит, создать еще одну ля слежения за 2?? :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
prokazzza
второй не вылетит никогда
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Подскажите, а как сделать чтобы он проверял 2 процесса, а не 1, чет у меня не получается.

Код:
While 1
    IF ProcessExists("1.exe")=0 Then
    Run("1.exe")
EndIf 
Wend
 

VladUs

Скриптер
Сообщения
621
Репутация
180
Код:
While 1
    IF ProcessExists("1.exe")=0 Then
    Run("1.exe")
    elseif ProcessExists("2.exe") = 0 then
    Run("2.exe")
EndIf 
Wend
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Пример используя библиотеку OnAutoItErrorRegister:

Код:
#include <OnAutoItErrorRegister.au3>

_OnAutoItErrorRegister("_MyErrorHandler")


;========================
;
;Тут тело скрипта
;
;========================


Func _MyErrorHandler() ;Restart the application
    ;Эту проверку можно убрать в данном случае
    If MsgBox(52, 'Crash recieved', 'Restart application?') <> 6 Then
        Return
    EndIf
    
    Local $sRunLine = @AutoItExe & ' "' & @ScriptFullPath & '"'
    
    If @Compiled Then
        $sRunLine = @ScriptFullPath
    EndIf
    
    Run($sRunLine, @ScriptDir)
EndFunc
 
Верх