Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение EventLog

14K
05 мая 2008 года
Bladrag
50 / / 02.12.2006
Люди, если кто работал с EventLog'ом windows, подскажите как его грамотно прочитать средствами Delphi, определить сообщения об ошибках и записать дату\время ошибки и ее источник хотябы в Edit или Memo!!!! Закопался в документации, там черт ногу сломит, не могу разобраться! Если можно, приведите простейший пример!!!
261
05 мая 2008 года
ahilles
1.5K / / 03.11.2005
Функции OpenEventLog, ReadEventLog
14K
05 мая 2008 года
Bladrag
50 / / 02.12.2006
Я читал об этих функциях. а ты сам их применял? Можешь пример написать? я не могу разобраться с ReadEventLog. Какие в нее параметры передавать? И как например из EventLog'a выудить записи и перенести их в строковые переменные допустим или переменные даты и времени?
261
06 мая 2008 года
ahilles
1.5K / / 03.11.2005
писать пример нет времени. При написании, придётся самому определять структуру EVENTLOGRECORD, да и работа с ней довольно-таки сложновато. Но есть хороший набор компонентов NTSet, в котором есть компонент чтения записей из EventLog
14K
07 мая 2008 года
Bladrag
50 / / 02.12.2006
Я скачал NTSet c http://www.sam-solutions.net/download/nts1-15b-d2006.exe. Только там ни хэлпа нет никакого, ни инструкций. Установил, пытаюсь в Delphi открывать примеры, представленные там, все открываются с ошибками. Система не может найти классы, которые используются в примерах. Ты себе эту штучку не устанавливал?
261
07 мая 2008 года
ahilles
1.5K / / 03.11.2005
Цитата: Bladrag
Ты себе эту штучку не устанавливал?


не устанавливал. нет времени.

257
08 мая 2008 года
kosfiz
1.6K / / 18.09.2005
Цитата: Bladrag
Я читал об этих функциях. а ты сам их применял? Можешь пример написать? я не могу разобраться с ReadEventLog. Какие в нее параметры передавать? И как например из EventLog'a выудить записи и перенести их в строковые переменные допустим или переменные даты и времени?


выдалась пару минут в пасмурный денёк. набросал тебе пример чтения одной записи. пример взят их мсдн. там правда полное чтение, но я думаю разберешься, если что спросишь.
[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

14K
09 мая 2008 года
Bladrag
50 / / 02.12.2006
2kosfiz спасибо за помошч В очередной раз) я ни от кого разумных ответов чет не добился)
257
10 мая 2008 года
kosfiz
1.6K / / 18.09.2005
немного изменил код: теперь вроде как весь должен читаться
[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. вроде правильно.
14K
10 мая 2008 года
Bladrag
50 / / 02.12.2006
2kosfiz Спасибо. Потестил, вроде работает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог