Functions > ObjCOM >


ObjEvent

Traite les �v�nements entrants de l'objet donn�.

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

Param�tres

$ObjectVar Variable contenant l'objet � partir duquel vous souhaitez recevoir des �v�nements
"functionprefix" Le pr�fixe des fonctions que vous d�finissez pour traiter les �v�nements re�us.
Le pr�fixe est ajout� au nom des m�thodes des objets.
"interface name" [optionnel] Nom d'une interface d'�v�nement � utiliser.
Remarque: Il doit �tre pris en charge comme un sortant pour l'Objet ET il doit �tre de type DISPATCH.

Valeur de retour

Succ�s: Retourne un objet ou un nom de fonction.
�chec: D�finit @error <> 0.

Remarques

Le premier format est utilis� pour recevoir des �v�nements de l'objet donn�.
Pour recevoir un �v�nement particulier, cr�ez un nom de fonction AutoIt en utilisant le pr�fixe donn� en annexe avec le nom de l'�v�nement.

Le second format est utilis� pour g�rer les erreurs COM.
Si une erreur COM se produit, la fonction donn�e est appel�e. Le premier param�tre de la fonction sera l'objet d'erreur.
Vous pouvez l'utiliser pour acc�der aux propri�t�s diff�rentes de cet objet.
Si le second param�tre est omis, la fonction retournera une cha�ne contenant le nom de la fonction du gestionnaire d'erreur en cours. Si aucune fonction gestionnaire d'erreur a �t� install�e, elle retournera une cha�ne vide.

Propri�t�s de l'objet Erreur AutoIt:

.number La valeur HRESULT de Windows d'un appel COM
.windescription Le texte FormatWinError() d�riv� de .number
.source Nom de l'objet g�n�r� par l'erreur (contenu de ExcepInfo.source )
.description Description de l'objet source de l'erreur (contenu de ExcepInfo.description)
.helpfile Le fichier d'aide de l'objet source de l'erreur (contenu de ExcepInfo.helpfile)
.helpcontext L'ID de contexte du fichier d'aide de l'objet de la source (contenu de ExcepInfo.helpcontext)
.lastdllerror Le nombre retourn� par GetLastError()
.scriptline La ligne du script sur laquelle l'erreur est survenue

Consultez R�f�rence Obj/COM pour plus de d�tails.

En relation

GUICtrlCreateObj, IsObj, ObjCreate, ObjGet

Exemples

Exemple 1

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Suivi d'erreur. Ce code pi�ge toutes les erreurs COM pendant l'ex�cution.
    ; Cet objet particulier est d�clar� Local, ce qui signifie qu'apr�s le retour de la fonction, il n'existera plus.
    Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")

    ; Cr�e un objet Internet Explorer
    Local $oIE = ObjCreate("InternetExplorer.Application")
    ; V�rifie les erreurs
    If @error Then Return

    $oIE.Visible = True ; D�finit la visibilit�

    ; Objet sink personnel
    Local $oIEEvents = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2")

    ; Navigue quelque part
    $oIE.navigate("http://www.google.com/")
    ; V�rifie les erreurs lors du chargement
    If @error Then
        $oIE.Quit()
        Return
    EndIf

    ; Attend que la page se charge
    Do
        Sleep(10)
    Until $oIE.readyState = "complete" Or $oIE.readyState = 4

    ; Provoque d�lib�r�ment une erreur en appelant une m�thode qui n'existe pas
    $oIE.PlayMeARockAndRollSong()

    ; V�rifie les erreurs
    If @error Then MsgBox($MB_SYSTEMMODAL, "COM Error", "@error is set to COM error number." & @CRLF & "@error = 0x" & Hex(@error))

    ; Attend quelques secondes pour voir si d'autres �v�nements seront d�clench�s
    Sleep(3000)

    ; Rien de plus � faire. Ferme IE et retourne
    $oIE.Quit()

    #forceref $oErrorHandler, $oIEEvents
EndFunc   ;==>Example

; D�finition de la m�thode BeforeNavigate2
Func _IEEvent_BeforeNavigate2($oIEpDisp, $sIEURL, $iIEFlags, $sIETargetFrameName, $sIEPostData, $iIEHeaders, $bIECancel)
    ConsoleWrite("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--BeforeNavigate2 fired--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & _
            "$oIEpDisp = " & $oIEpDisp() & "  -  " & ObjName($oIEpDisp) & @CRLF & _ ;par exemple la propri�t� et le nom par d�faut de l'objet
            "$sIEURL = " & $sIEURL & @CRLF & _
            "$iIEFlags = " & $iIEFlags & @CRLF & _
            "$sIETargetFrameName = " & $sIETargetFrameName & @CRLF & _
            "$sIEPostData = " & $sIEPostData & @CRLF & _
            "$iIEHeaders = " & $iIEHeaders & @CRLF & _
            "$bIECancel = " & $bIECancel & @CRLF & _
            "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " & @CRLF & @CRLF)
EndFunc   ;==>_IEEvent_BeforeNavigate2

; La fonction d'erreur COM de l'utilisateur. Sera appel�e en cas d'erreur COM
Func _ErrFunc($oError)
    ; Faire quelque chose ici.
    ConsoleWrite(@ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _
            @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _
            @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _ 
            @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _
            @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

Exemple 2

Global $__g_oTemplateCOMErrorHandler = 0

Local $oShell = ObjCreate("Shell.Application")

; Traite les appels susceptibles d'entra�ner une erreur fatale

; Ce qui suit ne provoque pas d'erreur fatale, d�finit @error comme dans 3.3.11.0
Template_COMErrorRegister()
$oShell.InvalidFunction()
If @error Then MsgBox(4096, "COM Error Detected", @error)
Template_COMErrorUnregister()

; Ce qui suit provoque une erreur fatale, la 2nd ligne ne sera pas ex�cut�e.
$oShell.InvalidFunction()
If @error Then MsgBox(4096, "COM Error Detected", @error)

Func Template_COMErrorRegister()
    $__g_oTemplateCOMErrorHandler = ObjEvent("AutoIt.Error", "Template_COMErrFunc")
EndFunc   ;==>Template_COMErrorRegister

Func Template_COMErrorUnregister()
    $__g_oTemplateCOMErrorHandler = 0
EndFunc   ;==>Template_COMErrorUnregister

Func Template_COMErrFunc()
    ; Ne rien faire de sp�cial, il suffit de v�rifier @error apr�s les fonctions suspectes
EndFunc   ;==>Template_COMErrFunc