; Пример ObjEvent

ProgressOn("Пример", "Загрузка страницы...")
$oIE = ObjCreate("InternetExplorer.Application.1") ; Создаёт приложение Internet Explorer
$SinkObject = ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents2") ; Назначает события для UDFs начиная с IEEvent_

; Некоторая браузерная деятельность
$oIE.Visible = 1
$oIE.RegisterAsDropTarget = 1
$oIE.RegisterAsBrowser = 1
$oIE.Navigate("http://www.AutoItScript.com/")

Sleep(3000) ; Дайте время для загрузки веб-страницы

$SinkObject = 0 ; Остановить события IE
$oIE.Quit ; Выход IE
$oIE = 0
Exit

; Одна из многих функций Internet Explorer, происходящих по событию

Func IEEvent_ProgressChange($Progress, $ProgressMax)
	$percent = Int(($Progress * 100) / $ProgressMax)
	If $percent >= 0 And $percent <= 100 Then
		ProgressSet($percent, $percent & " % пройдено.", "Загрузка веб-страницы")
	EndIf
EndFunc

Exit

; Пример обработчика ошибок COM
; -------------------------

$oIE = ObjCreate("InternetExplorer.Application.1") ; Создаёт приложение Internet Explorer

Global $g_eventerror = 0 ; для проверки, чтобы знать, что COM ошибка произошла. Необходимо сбросить после обработки.

$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; Инициализация обработчика ошибок COM

$oIE.UnknownMethod ; Сознательно вызовите неопределенный метод

If $g_eventerror Then
	$g_eventerror = 0
	MsgBox(0, "Тест AutoItCOM", "Тест пройден: Мы получили код ошибки: " & @error)
Else
	MsgBox(0, "Тест AutoItCOM", "Тест не удался!")
EndIf

Exit

; Это мной указанный обработчик ошибок
Func MyErrFunc()
	MsgBox(4096, "Тест AutoItCOM", "Мы перехватили COM ошибку !" & @CRLF & @CRLF & _
			"err.description is: " & @TAB & $oMyError.description & @CRLF & _
			"err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
			"err.number is: " & @TAB & Hex($oMyError.number, 8) & @CRLF & _
			"err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
			"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
			"err.source is: " & @TAB & $oMyError.source & @CRLF & _
			"err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
			"err.helpcontext is: " & @TAB & $oMyError.helpcontext _
			)

	Local $err = $oMyError.number
	If $err = 0 Then $err = -1

	$g_eventerror = $err ; для проверки после того как эта функция сработает
EndFunc