UDF > EventLog >


_EventLog__Notify

Permet à une application de recevoir des notifications d'événements

#include <EventLog.au3>
_EventLog__Notify ( $hEventLog, $hEvent )

Paramètres

$hEventLog Le handle du journal d'événement
$hEvent Le handle d'un objet événement de réinitialisation manuelle

Valeur de retour

Succès: Retourne True
Échec: Retourne False

Remarques

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() .

En relation

_EventLog__Close, _EventLog__DeregisterSource

Exemple

#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