- Сообщения
- 8,673
- Репутация
- 2,486
AutoIt: 3.3.12.0, 3.3.9.4, 3.3.8.X, 3.3.6.X
Версия: 0.1
Категория: Вспомогательные функции, Разное
Описание: Позволяет установить обработчик критических ошибок в AutoIt скрипте.
Особенности, ограничения, и отличия от других похожих обработчиков (в том числе и от моего OnAutoItErrorRegister):
Примечания:
[*]Используйте предоставленный инструмент GetErrLineCode.au3 для получения корректной строки кода с ошибкой по номеру строки полученной от сообщения об ошибке из скомпилированного скрипта.
Пример №1:
Пример №2:
Файл: AutoItErrorHandler.zip (Скачиваний:
)
Снимок:
История версий:
Источник: autoit-script.ru
Автор(ы): G.Sandler (CreatoR), основной движок взят из библиотеки SEH от firex.
Версия: 0.1
Категория: Вспомогательные функции, Разное
Описание: Позволяет установить обработчик критических ошибок в AutoIt скрипте.
Особенности, ограничения, и отличия от других похожих обработчиков (в том числе и от моего OnAutoItErrorRegister):
[Особенности]
[*]Не используется Hook & StdOut.
[*]Продолжение выполнения скрипта даже после критической ошибки.
[Ограничения]
[*]На данный момент, работает только в скомпилированном скрипте.
[*]На данный момент поддерживает только AutoIt 3.3.12.0 / 3.3.9.4 / 3.3.8.X / 3.3.6.X.
[*]Ошибки вызванные утечкой памяти (жёсткое падение и рекурсия) не поддерживаются.
[*]Не используется Hook & StdOut.
[*]Продолжение выполнения скрипта даже после критической ошибки.
[Ограничения]
[*]На данный момент, работает только в скомпилированном скрипте.
[*]На данный момент поддерживает только AutoIt 3.3.12.0 / 3.3.9.4 / 3.3.8.X / 3.3.6.X.
[*]Ошибки вызванные утечкой памяти (жёсткое падение и рекурсия) не поддерживаются.
Примечания:
[*]Используйте предоставленный инструмент GetErrLineCode.au3 для получения корректной строки кода с ошибкой по номеру строки полученной от сообщения об ошибке из скомпилированного скрипта.
Пример №1:
Код:
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include 'AutoItErrorHandler.au3'
If Not _OnAutoItErrorRegister('', '', 'My App Error') Then
Switch @error
Case -1
;If Not @Compiled Then
MsgBox(48, @ScriptName, 'ATM, only compiled script is supported, please compile the script.')
;EndIf
Case 1
;If Not StringRegExp(@AutoItVersion, '^3\.3\.(12\.0|9\.4|8\.\d+|6\.\d+)$') Then
MsgBox(48, @ScriptName, 'ATM, only these AutoIt versions are supported:' & @CRLF & '3.3.12.0 / 3.3.9.4 / 3.3.8.X / 3.3.6.X')
;EndIf
EndSwitch
Exit
EndIf
GUICreate('AutoItErrorHandler Example', 350, 200)
GUICtrlCreateLabel('This script is just an example.' & @LF & @LF & 'It will produce a syntax error in', 25, 40, 300, 50)
GUICtrlCreateLabel('5', 185, 50, 50, 40)
GUICtrlSetColor(-1, 0xF20000)
GUICtrlSetFont(-1, 30, 800, 0, 'Tahoma')
GUICtrlCreateLabel('seconds.', 220, 67, 300, 50)
GUICtrlCreateLabel('The result shown as a CUSTOM error message, you can change it!', 25, 120, 350, 20)
$iUnRegister_Bttn = GUICtrlCreateButton('UnRegister AutoItError handler', 25, 140, 200, 22)
GUICtrlCreateLabel('Copyright Firex & G.Sandler © 2015', 25, 170, 350, 80)
GUICtrlSetColor(-1, 0x808080)
GUICtrlSetFont(-1, 8.5, 800, 6)
GUISetState()
Dim $iTimer
For $i = 3 To 1 Step -1
GUICtrlSetData(4, $i)
$iTimer = TimerInit()
While TimerDiff($iTimer) < 1000
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $iUnRegister_Bttn
_OnAutoItErrorUnRegister()
EndSwitch
WEnd
Next
;We deliberately make a syntax mistake and call the error!
If Random(1, 5, 1) = 3 Then
MsgBox(0, '', )
Else
_NotExistingFunc()
EndIf
Пример №2:
Код:
#NoTrayIcon
#include <Constants.au3>
#include 'AutoItErrorHandler.au3'
If Not _OnAutoItErrorRegister('_MyErrorHandler') Then
Switch @error
Case -1
;If Not @Compiled Then
MsgBox(48, @ScriptName, 'ATM, only compiled script is supported, please compile the script.')
;EndIf
Case 1
;If Not StringRegExp(@AutoItVersion, '^3\.3\.(12\.0|9\.4|8\.\d+|6\.\d+)$') Then
MsgBox(48, @ScriptName, 'ATM, only these AutoIt versions are supported:' & @CRLF & '3.3.12.0 / 3.3.9.4 / 3.3.8.X / 3.3.6.X')
;EndIf
EndSwitch
Exit
EndIf
;We deliberately make an array bounding error and call the error!
Dim $aArr[1]
MsgBox(0, '', $aArr[1])
MsgBox(64, @ScriptName, 'We can continue!!!' & @CRLF & 'Now we set other AutoIt Error Handler (default error msg handler), and trigger some error...')
_OnAutoItErrorRegister('')
$aArr[3] = $aArr
Func _MyErrorHandler($sScriptPath, $iScriptLine, $sErrDesc, $vParams, $hBitmap)
Local $sMessage = StringFormat('SCRIPT FILE:\n%s\n\nSCRIPT ERROR LINE:\n%s\n\nERROR DESCRIPTION:\n%s', $sScriptPath, $iScriptLine, $sErrDesc)
If FileExists(@WindowsDir & '\Media\chord.wav') Then
SoundPlay(@WindowsDir & '\Media\chord.wav')
Else
DllCall('user32.dll', 'int', 'MessageBeep', 'int', 0x00000010)
EndIf
If MsgBox(BitOR($MB_SYSTEMMODAL, $MB_YESNO), 'Crash recieved!', 'Restart application?' & @CRLF & '(if you press "No", the script will continue from next line)' & @CRLF & @CRLF & $sMessage) <> 6 Then
Return $iAEH_CONTINUE_PROC
EndIf
Local $sRunLine = @AutoItExe & ' "' & @ScriptFullPath & '"'
If @Compiled Then
$sRunLine = @ScriptFullPath
EndIf
Run($sRunLine, @ScriptDir)
Return $iAEH_TERMINATE_PROC
EndFunc
Файл: AutoItErrorHandler.zip (Скачиваний:
Снимок:
История версий:
v0.1
* Первая публичная версия
* Первая публичная версия
Источник: autoit-script.ru
Автор(ы): G.Sandler (CreatoR), основной движок взят из библиотеки SEH от firex.