Чтение EventLog
не устанавливал. нет времени.
выдалась пару минут в пасмурный денёк. набросал тебе пример чтения одной записи. пример взят их мсдн. там правда полное чтение, но я думаю разберешься, если что спросишь.
[highlight=delphi]
TEventLogRecord = record
Length: dword;
Reserved: dword;
RecordNumber: dword;
TimeGenerated: dword;
TimeWritten:dword;
EventID: dword;
EventType: word;
NumStrings: word;
EventCategory: word;
ReservedFlags: word;
ClosingRecordNumber: dword;
StringOffset: dword;
UserSidLength: dword;
UserSidOffset: dword;
DataLength: dword;
DataOffset: dword;
end;
PTEventLogRecord = ^TEventLogRecord;
{........................................................}
var
h, dwread, dwneeded: dword;
p, src:pointer;
b:PTEventLogRecord;
s:string;
begin
h:=OpenEventLog(nil, PChar('Application'));
if h<>INVALID_HANDLE_VALUE then
begin
p:=AllocMem(1024);
src:=p;
if ReadEventLog(h, 4 or 1, 0, p, 1024, dwread, dwneeded) then
begin
b:=p;
s:='record number: '+IntToStr(b^.RecordNumber)+#13#10 +'source: '+PChar(integer(b)+sizeof(TEventLogRecord))+#13#10 + ' event id: ' + IntToHex(b^.EventID,8) +#13#10 + ' event type: '+IntToStr(b^.EventType);
MessageBox(0,Pchar(s), Pchar('Record text:'),0);
end;
p:=pointer(integer(p)+b^.Length);{это если тебе придется на следующую запись переходить, когда полность читать будешь}
FreeMem(src);
CloseEventLog(h);
end;
end;
[/highlight]
а вот ссылка на пример из мсдн: http://msdn.microsoft.com/en-us/library/bb427356(VS.85).aspx
[highlight=delphi]
var
h, dwread, dwneeded: dword;
p, src:pointer;
b:PTEventLogRecord;
s:string;
begin
h:=OpenEventLog(nil, PChar('Application'));
if h<>INVALID_HANDLE_VALUE then
begin
p:=AllocMem(1024*64);
src:=p;
while ReadEventLog(h, 4 or 1, 0, p, 1024*64, dwread, dwneeded) do
begin
while dwread>0 do
begin
begin
b:=p;
s:='record number: '+IntToStr(b^.RecordNumber)+#13#10 +'source: '+PChar(integer(b)+sizeof(TEventLogRecord))+#13#10 + ' event id: ' + IntToHex(b^.EventID,8) +#13#10 + ' event type: '+IntToStr(b^.EventType);
Memo1.Lines.Add(s);
end;
dwread:=dwread-b^.Length;
p:=pointer(integer(p)+b^.Length);
end;
p:=src;
ZeroMemory(p, 1024*64);
end;
FreeMem(src);
CloseEventLog(h);
end;
end;
[/highlight]
P.S. вроде правильно.