与えられたオブジェクトから得られるイベントをハンドルします。
ObjEvent ( $ObjectVar, "functionprefix" [, "interface name"] )
ObjEvent ( "AutoIt.Error" [, "function name"] )
パラメータ
$ObjectVar | イベントを取得したいオブジェクトを格納している変数 |
"functionprefix" | 取得したイベントをハンドルするために定義した関数の接頭辞。 接頭辞はオブジェクトのメソッド名によって追加されます |
"interface name" | [オプション]使用するイベントのインターフェイス名 注意:オブジェクトがoutgoingをサポートしている、またDISPATCH型である必要があります。 |
返し値
成功 | オブジェクトまたは関数名を返します。 |
失敗 | ""を返し、@errorを1に設定します。 |
注意
最初のフォーマットはオブジェクトからイベントを取得するために使用します。
関連
ObjGet, IsObj, ObjCreate, GUICtrlCreateObj
例
; ObjEvent サンプル
ProgressOn("Example", "Loading page...")
$oIE=ObjCreate("InternetExplorer.Application.1") ; インターネットエクスプローラ アプリケーションを作成
$SinkObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents2") ; UDFの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
; インターネットエクスプローラ イベント関数のひとつ
Func IEEvent_ProgressChange($Progress,$ProgressMax)
$percent = Int( ($Progress * 100) / $ProgressMax )
If $percent >= 0 And $percent <= 100 Then
ProgressSet ( $percent , $percent & " percent to go." , "loading web page" )
EndIf
EndFunc
Exit
; COMエラーハンドリング サンプル
; -------------------------
$oIE=ObjCreate("InternetExplorer.Application.1") ; インターネットエクスプローラ アプリケーションを作成
Global $g_eventerror = 0 ; COMエラーが起きたかどうか知るためのチェック用。ハンドリング後にリセットする必要がある。
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; COMエラーハンドラ初期化
$oIE.UnknownMethod ; わざと未定義メソッドを呼び出す
If $g_eventerror then
$g_eventerror = 0
Msgbox (0,"AutoItCOM test","Test passed: We got an error number: " & @error)
Else
Msgbox (0,"AutoItCOM test","Test failed!")
Endif
Exit
; カスタム定義したエラーハンドラ
Func MyErrFunc()
Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @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