Function Reference

ObjEvent

与えられたオブジェクトから得られるイベントをハンドルします。

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

 

パラメータ

$ObjectVar イベントを取得したいオブジェクトを格納している変数
"functionprefix" 取得したイベントをハンドルするために定義した関数の接頭辞。
接頭辞はオブジェクトのメソッド名によって追加されます
"interface name" [オプション]使用するイベントのインターフェイス名
注意:オブジェクトがoutgoingをサポートしている、またDISPATCH型である必要があります。

 

返し値

成功 オブジェクトまたは関数名を返します。
失敗 ""を返し、@errorを1に設定します。

 

注意

最初のフォーマットはオブジェクトからイベントを取得するために使用します。
指定したイベントを取得するためには、指定したイベント名の接頭辞を使用したAutoIt関数名を作成しなければなりません。

2番目のフォーマットはCOMのエラーをハンドリングするために使用します。COMのエラーが発生すると、指定した関数が呼び出されます。
2番目のパラメータを省略すると、(存在する場合は)現在のエラーハンドリング関数を返します。

オブジェクトについてのより詳しい説明についてはObj/COM Referenceを参照してください。

 

関連

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