Permet à une application de recevoir des notifications d'événements
#include <EventLog.au3>
_EventLog__Notify ( $hEventLog, $hEvent )
$hEventLog | Le handle du journal d'événement |
$hEvent | Le handle d'un objet événement de réinitialisation manuelle |
Succès: | Retourne True |
Échec: | Retourne False |
Cette fonction ne fonctionne pas avec des handles distants.
Si le paramètre $hEventLog est le handle d'un journal d'événements sur un ordinateur distant, cette fonction retourne zéro, et GetLastError retourne ERROR_INVALID_HANDLE.
Quand un événement est écrit dans le journal spécifié par $hEventLog, le système utilise la fonction PulseEvent pour définir l'événement spécifié par le paramètre $hEvent pour l'état signalé.
Si le thread n'est pas en attente d'un événement lorsque le système appelle PulseEvent, le thread ne recevra pas de notification.
Par conséquent, vous devez créer un thread séparé pour attendre les notifications.
A noter que le système appelle PulseEvent pas plus d'une fois toutes les cinq secondes.
Par conséquent, même si plus d'un changement de journal d'événement se produit dans un intervalle de cinq secondes, vous ne recevrez qu'une notification.
Le système continuera à vous informer des changements jusqu'à ce que vous fermeiz le handle du journal d'événement.
Pour fermer le journal d'événements, utilisez la fonction _EventLog__Close() ou _EventLog__DeregisterSource() .
_EventLog__Close, _EventLog__DeregisterSource
#include <EventLog.au3> #include <FontConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPIHObj.au3> #include <WinAPIProc.au3> Global $g_idMemo Example() Func Example() Local $hEventLog, $hEvent, $iResult ; Crée une GUI GUICreate("EventLog", 400, 300) $g_idMemo = GUICtrlCreateEdit("", 2, 2, 396, 300, 0) GUICtrlSetFont($g_idMemo, 9, $FW_NORMAL, $GUI_FONTNORMAL, "Courier New") GUISetState(@SW_SHOW) ; Définit un événement $hEventLog = _EventLog__Open("", "Security") $hEvent = _WinAPI_CreateEvent(0, False, False, "") _EventLog__Notify($hEventLog, $hEvent) ; Attend qu'un nouvel événement se déclenche MemoWrite("Attente d'un nouvel événement") $iResult = _WinAPI_WaitForSingleObject($hEvent) _WinAPI_CloseHandle($hEvent) _EventLog__Close($hEventLog) ; Ecrit les résultats If $iResult = -1 Then MemoWrite("L'attente a échoué") Else MemoWrite("Nouvel événement apparu") EndIf ; Boucle jusqu'à ce que l'utilisateur quitte. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE EndFunc ;==>Example ; Ecrit une ligne dans le contrôle mémo Func MemoWrite($sMessage) GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1) EndFunc ;==>MemoWrite