Функция ObjEvent

         Описание функции


ObjEvent

Обрабатывает поступающие события от указанного объекта.

ObjEvent ( $ObjectVar, "functionprefix" [, "interface name"] )
ObjEvent ( "AutoIt.Error" [, "function name" ] )

Параметры

$ObjectVar Переменная, содержащая объект, от которого вы хотите получать события
"functionprefix" Префикс функции, определяемый вами для обработки полученных событий.
Префикс, добавляемый к имени метода объекта.
"interface name" [необязательный] Имя события для использования.
Примечание: Это должно поддерживаться как исходящие для объекта И это должно быть типом DISPATCH.

Возвращаемое значение

Успех:Возвращает объект или имя функции.
Ошибка:Возвращает "" (пустую строку) и устанавливает @error равным 1.

Примечания

Первый формат используется для получения событий из указанного объекта.
Чтобы получить определенное событие, создайте имя функции AutoIt, используя данный префикс добавляемый к имени события.

Второй формат используется для обработки ошибок COM. Если произошла любая ошибка COM, то вызывается данная функция. First parameter for the function will be error object. You can use it to access different properties of this object.
Если второй параметр опущен, то возвращается имя текущей функции обработчика ошибок, если имеется.

Более подробно смотрите в Описание Obj/COM.

См. также

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