基 础 函 数 参 考


ObjEvent

处理特定对象的传入事件.

ObjEvent ( 变量, "前缀" [, "接口"] )

ObjEvent ( "AutoIt.Error" [, "函数名称"] )

参 数

变量 接收事件的对象变量名称
"前缀" 处理接收事件的函数前缀.
前缀是追加对象的方法名.
"接口" [可选参数] 事件的接口名称.
注意:它必须支持即将传出的对象, 而且必须是发送类型
Object AND 必须为 DISPATCH 类型.

返 回 值

成功: 返回对象或函数的名称.
失败: 返回 "", 并设置 @error 值.

备 注

第一个语句格式用来接收特定的对象事件.
要接收的特定事件, 创建一个 AutoIt 给定的 using 函数名
事件名称追加指定的前缀.

第二种格式是用于 COM 错误处理.
如果任何 COM 错误发生时, 调用指定的函数.
函数的第一个参数将是错误的对象.
您可以使用它来访问这个对象的不同属性.
如果第二个参数被忽略,
则返回当前错误处理函数的名称, 如果存在.

Obj/COM 参考 的相关说明.

相 关 函 数

ObjGet, IsObj, ObjCreate, GUICtrlCreateObj

函 数 示 例


Opt("MustDeclareVars", 1)

_Example()




Func _Example()

    ; 监视错误. 捕获所有 COM 发生的错误.
    ; 这种特定对象被声明为局部作用域, 函数返回后它将不存在.
    Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")

    ; 创建 Internet Explorer 对象
    Local $oIE = ObjCreate("InternetExplorer.Application")
    ; 检查错误
    If @error Then Return

    $oIE.Visible = True ; 设置可见

    ; 自定义接收对象
    Local $oIEEvents = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2")

    ; 导航到某处
    $oIE.navigate("http://www.google.com/")
    ; 检查加载时的错误
    If @error Then
        $oIE.Quit()
        Return
    EndIf

    ; 等待加载页面
    While 1
        If $oIE.readyState = "complete" Or $oIE.readyState = 4 Then ExitLoop
        Sleep(10)
    WEnd

    ; 通过调用非现有的方法有意设置错误
    $oIE.PlayMeARockAndRollSong()
    ; 检查错误
    If @error Then MsgBox(48 + 262144, "COM 错误", "@error 为设置的 COM 错误代码." & @CRLF & "@error = " & @error)

    ; 等待几秒钟, 看看更多的事件将被激发
    Sleep(3000)

    ; 没有更多的工作要做. 关闭 IE 浏览器, 并从函数返回
    $oIE.Quit()

    #forceref $oErrorHandler, $oIEEvents

EndFunc   ;==>_Example


; 定义 BeforeNavigate2 方法
Func _IEEvent_BeforeNavigate2($IEpDisp, $IEURL, $IEFlags, $IETargetFrameName, $IEPostData, $IEHeaders, $IECancel)
    ConsoleWrite("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--BeforeNavigate2 fired--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & _
            "$IEpDisp = " & $IEpDisp() & "  -  " & ObjName($IEpDisp) & @CRLF & _ ; e.g. default property and name for the object
            "$IEURL = " & $IEURL & @CRLF & _
            "$IEFlags = " & $IEFlags & @CRLF & _
            "$IETargetFrameName = " & $IETargetFrameName & @CRLF & _
            "$IEPostData = " & $IEPostData & @CRLF & _
            "$IEHeaders = " & $IEHeaders & @CRLF & _
            "$IECancel = " & $IECancel & @CRLF & _
            "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & @CRLF)
EndFunc   ;==>_IEEvent_BeforeNavigate2

; 用户的 COM 错误监视函数. 如果发生 COM 错误将被调用
Func _ErrFunc($oError)
    ; 在此可做任何事情.
    ConsoleWrite("err.number is: " & @TAB & $oError.number & @CRLF & _
            "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            "err.description is: " & @TAB & $oError.description & @CRLF & _
            "err.source is: " & @TAB & $oError.source & @CRLF & _
            "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            "err.retcode is: " & @TAB & $oError.retcode & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

provider with jb51.net (unicode)