函数参考


_WordErrorHandlerRegister

注册并启用用户 COM 错误处理程序

#include <Word.au3>
_WordErrorHandlerRegister ( [$s_functionName = "__WordInternalErrorHandler"] )

参数

$s_functionName [可选参数] 用户定义 COM 错误处理程序名称的变量, 这个 UDF 默认为内部 COM 错误处理程序

返回值

成功: 返回 1
失败: 返回 0, 并设置 @ERROR
@Error: $_WordStatus_Success = 没有错误
$_WordStatus_GeneralError = 一般错误
@Extended: 包含无效的参数数目

注意/说明

 重要事项:当使用自己的错误处理,必须使用对象变量名为 $oWordErrorHandler (见示例).

 AutoIt 有能力捕获 COM 错误,并通过 ObjEvent 函数使用自定义错误处理程序.
  这个 UDF 有一个问题,因为它在某段时间内只能有一个 COM 错误处理程序可以使用.
 对于 UDF 使用 COM 错误处理程序,必须先注销用户的错误处理程序, 安装自己的错误处理程序后,
 再放置用户自定义错误处理程序到适当位置. 遗憾的是,默认情况下,该 UDF 没有办法访问用户错误处理程序句柄.
 你可以使用这个例程注册您的COM错误处理程序, 需要时在某种程度上 Word.au3 可以正常删除并恢复它.
 您可能要么指向您自己的自定义错误处理程序, 或者你可以使用 Word.au3 定制的(默认).
 使用默认 Word.au3 错误处理您还将获得一些写入到控制台的不错的诊断信息,和一些包含有关捕获错误信息的全局变量.
 如果你不使用这个实例例行自己的 COM 错误处理程序, Word.au3 将无法捕捉一些 COM 错误,
 并且你可能会遇到一些结果突然终止的脚本.

相关

示例/演示


; *******************************************************
; 示例 1 - 注册并在后来注销自定义和默认 Word.au3 错误处理程序
; *******************************************************
;
#include <Word.au3>

; 注册自定义的错误句柄
_WordErrorHandlerRegister("MyErrFunc")
; 执行一些操作
; 注销自定义错误处理程序
_WordErrorHandlerDeRegister()
; 执行其他操作
; 注册默认 IE.au3 COM 错误处理程序
_WordErrorHandlerRegister()
; 执行更多操作

Exit

Func MyErrFunc()
    ; 重要:错误对象变量必须命名为 $oWordErrorHandler
    Local $ErrorScriptline = $oWordErrorHandler.scriptline
    Local $ErrorNumber = $oWordErrorHandler.number
    Local $ErrorNumberHex = Hex($oWordErrorHandler.number, 8)
    Local $ErrorDescription = StringStripWS($oWordErrorHandler.description, 2)
    Local $ErrorWinDescription = StringStripWS($oWordErrorHandler.WinDescription, 2)
    Local $ErrorSource = $oWordErrorHandler.Source
    Local $ErrorHelpFile = $oWordErrorHandler.HelpFile
    Local $ErrorHelpContext = $oWordErrorHandler.HelpContext
    Local $ErrorLastDllError = $oWordErrorHandler.LastDllError
    Local $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(4096, "COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc   ;==>MyErrFunc