ObjEvent
Обрабатывает поступающие события от указанного объекта.
ObjEvent ( $ObjectVar, "functionprefix" [, "interface name"] )
ObjEvent ( "AutoIt.Error" [, "function name" ] )
Параметры
$ObjectVar | Переменная, содержащая объект, от которого вы хотите получать события |
"functionprefix" |
Префикс функции, определяемый вами для обработки полученных событий. Префикс, добавляемый к имени метода объекта. |
"interface name" |
[необязательный] Имя события для использования. Примечание: Это должно поддерживаться как исходящие для объекта И это должно быть типом DISPATCH. |
Возвращаемое значение
Успех: | Возвращает объект или имя функции. |
Ошибка: | Возвращает "" (пустую строку) и устанавливает @error равным 1. |
Примечания
Первый формат используется для получения событий из указанного объекта.См. также
ObjGet, IsObj, ObjCreate, GUICtrlCreateObjПример
; Пример 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