C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с Просмотрщиком событий, Как получить список событий
vvoid
Отправлено: 03.11.2005, 19:04


Машинист паровоза

Группа: Участник
Сообщений: 171



Всем доброго здравия.
Собственно вопрос:
В винадах 2000 и XP есть, так называемый, evnetlog. Говоря по русски: Панель управления-> Администрирование-> Управление компьютером-> Служебные программы-> Просмотр событий.
Вот и добрались :)
Так вот, мне надо получить список событий. Конкретнее список событий со вкладки "Система".
Может кто-нибудь подскажет, как это сделать на билдере?

"Сенкю вери мач" (конено без "вот уроды" :) )
Gedeon
Отправлено: 04.11.2005, 09:31


Ветеран

Группа: Модератор
Сообщений: 1742



см.
МСДН

Event Logging Functions

Вот пример оттуда же
CODE

//---------------------------------------------------------------------------

#pragma hdrstop
#include <windows.h>
#include <stdio>
using namespace std;
//---------------------------------------------------------------------------
#define BUFFER_SIZE (64*1024)

#pragma argsused

void DisplayEntries( )
{
HANDLE h;
EVENTLOGRECORD *pevlr;
BYTE bBuffer[BUFFER_SIZE];
DWORD dwRead, dwNeeded, cRecords, dwThisRecord;

// Open the Application event log.

h = OpenEventLog( NULL, // use local computer
"System"); // source name
if (h == NULL)
//ErrorExit("Could not open the Application event log.");
return;

pevlr = (EVENTLOGRECORD *) &bBuffer;

// Get the record number of the oldest event log record.

GetOldestEventLogRecord(h, &dwThisRecord);

// Opening the event log positions the file pointer for this
// handle at the beginning of the log. Read the event log records
// sequentially until the last record has been read.

while (ReadEventLog(h, // event log handle
EVENTLOG_FORWARDS_READ | // reads forward
EVENTLOG_SEQUENTIAL_READ, // sequential read
0, // ignored for sequential reads
pevlr, // pointer to buffer
BUFFER_SIZE, // size of buffer
&dwRead, // number of bytes read
&dwNeeded)) // bytes in next record
{
while (dwRead > 0)
{
// Print the record number, event identifier, type,
// and source name.

printf("%02d Event ID: 0x%08X ",
dwThisRecord++, pevlr->EventID);
printf("EventType: %d Source: %s\n",
pevlr->EventType, (LPSTR) ((LPBYTE) pevlr +
sizeof(EVENTLOGRECORD)));

dwRead -= pevlr->Length;
pevlr = (EVENTLOGRECORD *)
((LPBYTE) pevlr + pevlr->Length);
}

pevlr = (EVENTLOGRECORD *) &bBuffer;
}

CloseEventLog(h);
}



int main(int argc, char* argv[])
{
DisplayEntries();
system("PAUSE");
return 0;
}
//---------------------------------------------------------------------------


Отредактировано Gedeon — 04/11/2005, 09:34
Guest
Отправлено: 04.11.2005, 14:11


Не зарегистрирован







Спсибо!
По моему то что надо — разбираюсь!
vvoid
Отправлено: 04.11.2005, 14:13


Машинист паровоза

Группа: Участник
Сообщений: 171



Блин, забыл залогиниться.
Это был я smile.gif см.пред.пост

Вернуться в Вопросы программирования в C++Builder