处理特定对象的传入事件.
ObjEvent ( 变量, "前缀" [, "接口"] )
ObjEvent ( "AutoIt.Error" [, "函数名称"] )
变量 | 接收事件的对象变量名称 |
"前缀" | 处理接收事件的函数前缀. 前缀是追加对象的方法名. |
"接口" | [可选参数] 事件的接口名称. 注意:它必须支持即将传出的对象, 而且必须是发送类型 Object AND 必须为 DISPATCH 类型. |
成功: | 返回对象或函数的名称. |
失败: | 返回 "", 并设置 @error 值. |
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) |