Traite les �v�nements entrants de l'objet donn�.
ObjEvent ( $ObjectVar, "functionprefix" [, "interface name"] )
ObjEvent ( "AutoIt.Error" [, "function"] )
$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. |
Succ�s: | Retourne un objet ou un nom de fonction. |
�chec: | D�finit @error <> 0. |
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 |
GUICtrlCreateObj, IsObj, ObjCreate, ObjGet
#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
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