Function Reference

_IEErrorHandlerRegister

ユーザーのCOMエラーハンドラを登録し、有効にします。

#include <IE.au3>
_IEErrorHandlerRegister ( [$s_functionName = "__IEInternalErrorHandler"] )

 

パラメータ

$s_functionName [オプション]ユーザー定義のCOMエラーハンドラの名前の文字列。デフォルトではこのUDF内部のCOMエラーハンドラ

 

返し値

成功: 1を返します
失敗: 0を返し@ERRORを設定します
@Error: 0 ($_IEStatus_Success) = 正常終了
1 ($_IEStatus_GeneralError) = 一般的なエラー
@Extended: 無効なパラメータの番号が格納されています

 

注意

重要: 独自のエラーハンドラを使用する場合、使用するエラーオブジェクト変数の名前は$oIEErrorHandlerでなければなりません(例を参照)。

AutoItはCOMエラーを検知して、それをObjEvent関数を使用している自作のエラーハンドラに渡すことができます。ただし、ここにUDF作成者にとって問題になることがあります。一度に1つのCOMエラーハンドラしか使用できないのです。UDFがCOMエラーハンドラを使用するためにはまずユーザーのエラーハンドラの登録を解除し、自身をインストールし、その後ユーザーのハンドラを元に戻さなければなりません。不運なことにデフォルト設定ではUDFはユーザーのエラーハンドラのハンドルにアクセスする方法がありません。

この関数を使用することで必要なときにIE.au3がうまく解除、復元できるようにあなたのCOMエラーハンドラを登録できます。独自の自作エラーハンドラを使用することも、IE.au3用に開発されたものを使用する(デフォルト)こともできます。またデフォルトの IE.au3用エラーハンドラを使用すると、コンソールに書かれる便利な対話情報と検知したエラー情報を格納したグローバル変数を得られます。

このIE.au3関数を使用しないで独自のCOMエラーハンドラを作成した場合、いくつかのCOMエラーは検知することができず、結果として突然のスクリプト終了が起きる可能性があります。

デフォルトのエラーハンドラ(__IEInternalErrorHandler)を使用する場合、次のグローバル変数が参照用に設定されます。
$IEComErrorNumber、$IEComErrorNumberHex、$IEComErrorDescription、$IEComErrorScriptline、$IEComErrorWinDescription、
$IEComErrorSource、$IEComErrorHelpFile、$IEComErrorHelpContext、$IEComErrorLastDllError、$IEComErrorComObj、
$IEComErrorOutput

コンソールへのCOMエラーメッセージ表示は_IEErrorNotifyで制御することができます。

 

関連

_IEErrorHandlerDeRegister, _IEErrorNotify

 


; *******************************************************
; 例 1 - 自作エラーハンドラとデフォルトのIE.au3エラーハンドラを登録し、後で登録解除
; *******************************************************
;
#include <IE.au3>
; 自作エラーハンドラを登録
_IEErrorHandlerRegister ("MyErrFunc")
; なにか処理
; 自作エラーハンドラ登録解除
_IEErrorHandlerDeregister ()
; なにか処理
; デフォルトのIE.au3エラーハンドラを登録
_IEErrorHandlerRegister ()
; さらになにか処理

Exit

Func MyErrFunc()
    ; 重要: エラーオブジェクト変数の名前は$oIEErrorHandlerでなければならない
    $ErrorScriptline = $oIEErrorHandler.scriptline
    $ErrorNumber = $oIEErrorHandler.number
    $ErrorNumberHex = Hex($oIEErrorHandler.number, 8)
    $ErrorDescription = StringStripWS($oIEErrorHandler.description, 2)
    $ErrorWinDescription = StringStripWS($oIEErrorHandler.WinDescription, 2)
    $ErrorSource = $oIEErrorHandler.Source
    $ErrorHelpFile = $oIEErrorHandler.HelpFile
    $ErrorHelpContext = $oIEErrorHandler.HelpContext
    $ErrorLastDllError = $oIEErrorHandler.LastDllError
    $ErrorOutput = ""
    $ErrorOutput &= "--> COM Error Encountered in " & @ScriptName & @CR
    $ErrorOutput &= "----> $ErrorScriptline = " & $ErrorScriptline & @CR
    $ErrorOutput &= "----> $ErrorNumberHex = " & $ErrorNumberHex & @CR
    $ErrorOutput &= "----> $ErrorNumber = " & $ErrorNumber & @CR
    $ErrorOutput &= "----> $ErrorWinDescription = " & $ErrorWinDescription & @CR
    $ErrorOutput &= "----> $ErrorDescription = " & $ErrorDescription & @CR
    $ErrorOutput &= "----> $ErrorSource = " & $ErrorSource & @CR
    $ErrorOutput &= "----> $ErrorHelpFile = " & $ErrorHelpFile & @CR
    $ErrorOutput &= "----> $ErrorHelpContext = " & $ErrorHelpContext & @CR
    $ErrorOutput &= "----> $ErrorLastDllError = " & $ErrorLastDllError
    MsgBox(0,"COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc  ;==>MyErrFunc