Function Reference

_EventLog__Notify

アプリケーションのイベント通知受信を有効にします。

#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