處理特定對象的傳入事件.
ObjEvent ( 變量, "前綴" [, "接口"] )
ObjEvent ( "AutoIt.Error" [, "函數(shù)名稱"] )
變量 | 接收事件的對象變量名稱 |
"前綴" | 處理接收事件的函數(shù)前綴. 前綴是追加對象的方法名. |
"接口" | [可選參數(shù)] 事件的接口名稱. 注意:它必須支持即將傳出的對象, 而且必須是發(fā)送類型 Object AND 必須為 DISPATCH 類型. |
成功: | 返回對象或函數(shù)的名稱. |
失敗: | 返回 "", 并設(shè)置 @error 值. |
Opt("MustDeclareVars", 1)
_Example()
Func _Example()
; 監(jiān)視錯誤. 捕獲所有
COM 發(fā)生的錯誤.
;
這種特定對象被聲明為局部作用域, 函數(shù)返回后它將不存在.
Local
$oErrorHandler =
ObjEvent("AutoIt.Error", "_ErrFunc")
; 創(chuàng)建
Internet Explorer 對象
Local
$oIE = ObjCreate("InternetExplorer.Application")
;
檢查錯誤
If
@error Then
Return
$oIE.Visible = True ; 設(shè)置可見
;
自定義接收對象
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
;
通過調(diào)用非現(xiàn)有的方法有意設(shè)置錯誤
$oIE.PlayMeARockAndRollSong()
;
檢查錯誤
If
@error Then
MsgBox(48 + 262144, "COM
錯誤", "@error 為設(shè)置的
COM 錯誤代碼." & @CRLF & "@error = " & @error)
; 等待幾秒鐘,
看看更多的事件將被激發(fā)
Sleep(3000)
; 沒有更多的工作要做.
關(guān)閉 IE 瀏覽器, 并從函數(shù)返回
$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 錯誤監(jiān)視函數(shù). 如果發(fā)生 COM 錯誤將被調(diào)用
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) |