アプリケーションのイベント通知受信を有効にします。
#Include <EventLog.au3>
_EventLog__Notify($hEventLog, $hEvent)
パラメータ
$hEventLog | イベントログのハンドル |
$hEvent | 手動リセットイベントオブジェクトのハンドル |
返し値
成功: | True |
失敗: | False |
注意
この関数はリモートのハンドルは処理しません。hEventLogパラメータがリモートコンピュータ上のイベントログのハンドルの場合、この関数はゼロを返し、GetLastErrorはERROR_INVALID_HANDLEを返します。 イベントがhEventLogによって指定されたログに書き込まれる際、システムはhEventパラメータによって指定されたイベントを信号状態に設定するのにPulseEvent関数を使用します。 システムのPulseEvent呼び出し時にスレッドがイベント待機していない場合、スレッドは通知を受信しません。つまり、通知を待ち受ける別スレッドを作成しなければなりません。 システムはPulseEventを5秒間に1回以上は呼ばないことに注意が必要です。従って5秒間に2回以上のイベントログ変更があっても、1回しか通知を受け取れません。 システムはイベントログのハンドルを閉じるまで変更を通知し続けます。イベントログを閉じるには_EventLog__Close関数または_EventLog__DeregisterSource関数を使用してください。
関連
_EventLog__Close, _EventLog__DeregisterSource
例
#include <GuiConstantsEx.au3>
#include <EventLog.au3>
#include <WinAPI.au3>
Global $iMemo
_Main()
Func _Main()
Local $hEventLog, $hGUI, $hEvent, $iResult
; GUI作成
$hGUI = GUICreate("EventLog", 400, 300)
$iMemo = GUICtrlCreateEdit("", 2, 2, 396, 300, 0)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
GUISetState()
; イベントをセットアップ
$hEventLog = _EventLog__Open ("", "Security")
$hEvent = _WinAPI_CreateEvent (0, False, False, "")
_EventLog__Notify ($hEventLog, $hEvent)
; 新しいイベントが起きるまで待機
MemoWrite("Waiting for new event")
$iResult = _WinAPI_WaitForSingleObject ($hEvent)
_WinAPI_CloseHandle ($hEvent)
_EventLog__Close ($hEventLog)
; 結果を書き込む
If $iResult = -1 Then
MemoWrite("Wait failed")
Else
MemoWrite("New event occurred")
EndIf
; ユーザーが終了させるまでループ
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
; メモコントロールに1行書き込む
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite