Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

EventLog   Найти похожие ветки 

 
Vladimir_Shk ©   (2002-02-07 11:00) [0]

Привет All!

Нарисовалась такая проблемка.
Я написал сервис, который раз в неделю удаляет файлы из одной из папок на сервере.
Я хочу, чтобы успешные или неуспешные попытки фисксировались.

Я написал следующий код:

procedure TDelFreeSrv.ProcessDelete;
var hHandle : THandle;
begin
hHandle:=RegisterEventSource(nil,EvtPath);
if ClearDir(FPath,FALSE) then
ReportEvent(hHandle,EVENTLOG_INFORMATION_TYPE,0,EvtID,nil,1,0,PChar(lpMsgOK),nil);
else
ReportEvent(hHandle,EVENTLOG_WARNING_TYPE,0,EvtID,nil,1,0,PChar(lpMsgFail),nil);
DeRegisterEventSource(hHandle);
end;

Все уперлось в параметр EvtID. Как я понял из MSDN - "event identifier" и его структура должны находиться в message-file"е сервиса.
Как этот файл создается? Можно ли его создать в формате rc?


 
VuDZ ©   (2002-02-07 12:31) [1]

Reporting an Event
After you have added a source name to the registry, use the RegisterEventSource function to get a handle to the Application event log. The following example obtains the handle and then adds an event to the log using the ReportEvent function.


void MyReportEvent(LPSTR szMsg)
{
HANDLE h;

h = RegisterEventSource(NULL, // uses local computer
"SamplApp"); // source name
if (h == NULL)
ErrorExit("Could not register the event source.");

if (!ReportEvent(h, // event log handle
EVENTLOG_ERROR_TYPE, // event type
0, // category zero
MSG_ERR_EXIST, // event identifier
NULL, // no user security identifier
1, // one substitution string
0, // no data
(LPTSTR *) szMsg, // pointer to string array
NULL)) // pointer to data
ErrorExit("Could not report the event.");

DeregisterEventSource(h);
}

Recall that your header file contains the event identifiers. For this example, the following event identifier was used:

//
// MessageId: MSG_ERR_EXIST
// MessageText:
// File %1 does not exist.
//
#define MSG_ERR_EXIST ((DWORD)0xC0000004L)


 
Vladimir_Shk ©   (2002-02-07 14:53) [2]

Вообще-то у меня именно так и написано. Это что - отвечу, что знаю, а не по вопросу? Проблема, решение которой мне требуется - включить в exe мессаджи в бинарном виде (наверное в виде какого-то ресурса). На Visual C++ решение простое, мне нужно то же самое для Делфи.


 
VuDZ ©   (2002-02-07 15:02) [3]

#define MSG_ERR_EXIST ((DWORD)0xC0000004L) ?

определи константу типа integer и всё...
фактически то же самое и сделано в этом примере


 
Vladimir_Shk ©   (2002-02-07 16:43) [4]

Тогда я вообще ничего не понял. Что даст определение абстрактной константы? На какую запись она ссылается? Насколько я понимаю, в ресурсе exe-файла должна существовать реальная запись сообщения с реальным ID.



Страницы: 1 вся ветка

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
6-32935
Hawk
2001-11-14 21:54
2002.04.11
Опять поднимаю вопрос, как определить в Delphi IP адрес полученный от проваёдера?


3-32679
vitnt2000
2002-03-20 07:05
2002.04.11
SQL Запрос


1-32788
ArtSoft
2002-03-31 23:02
2002.04.11
HEX_to_INTEGER


1-32899
webnew
2002-03-29 17:46
2002.04.11
Подключение к IIS 5.0


3-32693
Sergant
2002-03-21 12:43
2002.04.11
Отображение удаленных записей в Grid е