Ermöglicht einer Anwendung Ereignisnachrichten zu empfangen
#include <EventLog.au3>
_EventLog__Notify ( $hEventLog, $hEvent )
| $hEventLog | Ein Handle zum Event Log |
| $hEvent | Ein Handle zu einem manuell erneuerten Event Object |
| Erfolg: | True |
| Fehler: | False |
Diese Funktion arbeitet nicht mit Remote Handles.
Wenn der $hEventLog Parameter auf ein Event Log auf einem Remote Computer verweist, gibt die Funktion "0" zurück und GetLastError gibt ERROR_INVALID_HANDLE zurück.
Wenn ein Ereignis in das durch hEventLog referenzierte Log geschrieben wird, verwendet das System die PulseEvent Funktion, um das Ereignis, dass mit dem $hEvent Parameter angegeben wurde, in den angegebenen Status zu setzen.
Wenn der Thread nicht auf das Ereignis wartet, wenn das System PulseEvent aufruft, wird der Thread keine Benachrichtigung erhalten.
Deshalb sollte ein separater Thread erstellt werden, der auf Benachrichtigungen wartet.
Es ist zu bedenken, dass das System PulseEvent nur einmal alle 5 Sekunden aufruft.
Deshalb wird, auch wenn sich mehrere Ereignisse innerhalb von 5 Sekunden ereignen, nur eine Nachricht empfangen.
Das System wird mit den Benachrichtigungen fortfahren, bis das Handle des EventLog geschlossen wird.
Um das EventLog zu schließen ist die _EventLog__Close() oder _EventLog__DeregisterSource() zu verwenden.
_EventLog__Close, _EventLog__DeregisterSource
#include "Extras\HelpFileInternals.au3"
#include <EventLog.au3>
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>
Example()
Func Example()
Local $hEventLog, $hEvent, $iResult
; Erstellt eine GUI
GUICreate("EventLog", 600, 300)
_MemoCreate(2, 2, 596, 294, 0)
GUISetState(@SW_SHOW)
; Ereignis einrichten
$hEventLog = _EventLog__Open("", "Security")
$hEvent = _WinAPI_CreateEvent(0, False, False, "")
_EventLog__Notify($hEventLog, $hEvent)
; Wartet, bis ein neues Ereignis auftritt
_MemoWrite("Warte auf neues Ereignis...")
$iResult = _WinAPI_WaitForSingleObject($hEvent)
_WinAPI_CloseHandle($hEvent)
_EventLog__Close($hEventLog)
; Gibt die Resultate aus
If $iResult = -1 Then
_MemoWrite("Warten war umsonst!")
Else
_MemoWrite("Es ist ein neues Ereignis aufgetreten!")
EndIf
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst.
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>Example