函数参考


_EventLog__Read

从事件日志读取一个值

#Include <EventLog.au3>
_EventLog__Read($hEventLog [, $fRead = True [, $fForward = True [, $iOffset = 0]]])

参数

$hEventLog 事件日志句柄
$fRead [可选参数] 如果真, 操作从最近的一次调用到函数使用该句柄依次进行.
如果假, 读取操作将从$iOffset参数指定的记录开始.
$fForward [可选参数] 如果真, 日志按日期顺序读取. 如果假, 日志按日期反序读取.
$iOffset [可选参数] 开始进行读取操作的事件记录的编号. 当为fRead真时该参数可忽略.

返回值

成功: 如下格式的数组:
[ 0] - 成功为真, 失败为假
[ 1] - 记录数
[ 2] - 项目提交的日期
[ 3] - 项目提交的时间
[ 4] - 项目被接收并被写入日志的日期
[ 5] - 项目被接收并被写入日志的事件
[ 6] - 事件标识
[ 7] - 事件类型. 下列值之一:
1 - 错误事件
2 - 警告事件
4 - 通知事件
8 - 审查成功事件
16 - 审查失败事件
[ 8] - 事件类型字符串
[ 9] - 事件科目
[10] - 事件来源
[11] - 计算机名
[12] - 用户名
[13] - 事件描述
[14] - 事件数据数组
失败: Array[0] = False

注意/说明

当函数成功返回时, 事件日志中的读取位置被所读取记录的编号调整. 尽管可读取多个记录, 该函数一次仅返回一个记录.

相关

_EventLog__Close, _EventLog__Open

示例/演示


#include <GUIConstantsEx.au3>
#include <EventLog.au3>

Global $iMemo

_Main()

Func _Main()
    Local $hEventLog, $aEvent

    ; 创建 GUI
    GUICreate("EventLog", 400, 300)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 300, 0)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

    ; 读取最近的事件记录
    $hEventLog = _EventLog__Open("", "Application")
    $aEvent = _EventLog__Read($hEventLog, True, False) ; 读取最后一条事件
;~  $hEventLog = _EventLog__Open("", "System")
;~  $aEvent = _EventLog__Read($hEventLog)
;~  $aEvent = _EventLog__Read($hEventLog, True, False)
    MemoWrite("Result ............: " & $aEvent[0])
    MemoWrite("Record number .....: " & $aEvent[1])
    MemoWrite("Submitted .........: " & $aEvent[2] & " " & $aEvent[3])
    MemoWrite("Generated .........: " & $aEvent[4] & " " & $aEvent[5])
    MemoWrite("Event ID ..........: " & $aEvent[6])
    MemoWrite("Type ..............: " & $aEvent[8])
    MemoWrite("Category ..........: " & $aEvent[9])
    MemoWrite("Source ............: " & $aEvent[10])
    MemoWrite("Computer ..........: " & $aEvent[11])
    MemoWrite("Username ..........: " & $aEvent[12])
    MemoWrite("Description .......: " & $aEvent[13])
    _EventLog__Close($hEventLog)


    ; 循环直到用户退出
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

; 写入一行到 memo 控件
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite