Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-32764
Konsul
2002-03-31 00:25
2002.04.11
Taskbar


3-32643
IronHawk
2002-03-19 12:24
2002.04.11
Обнуляються данные в базе !


1-32839
LiNkS
2002-03-29 09:32
2002.04.11
ListBox


7-32997
Zmey
2002-01-17 06:15
2002.04.11
помогите с TRichEdit


3-32632
Mitya
2002-03-18 14:00
2002.04.11
sql запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский