I am writing a Service application for Windows in Delphi. On some events I write messages to the Windows EventLog. That works, but there is the following text in every log entry:
The description for Event ID xxx from source yyyyy cannot be found...
I don't want this.
What I have done:
generate an ResouceEventlog.mc with this content:
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS Informational=0x1:STATUS_SEVERITY_INFORMATIONAL Warning=0x2:STATUS_SEVERITY_WARNING Error=0x3:STATUS_SEVERITY_ERROR ) FacilityNames=(System=0x0:FACILITY_SYSTEM Runtime=0x2:FACILITY_RUNTIME Stubs=0x3:FACILITY_STUBS Io=0x4:FACILITY_IO_ERROR_CODE ) LanguageNames=(German=0x407:MSG00407) MessageIdTypedef=WORD MessageID=0x1 Symbolicname=CAT_ALL Language=German Allgemein . MessageID=0x2 Symbolicname=CAT_CALL Language=German Anruf . MessageID=0x3 Symbolicname=CAT_LIC Language=German Lizenzinformation . MessageID=0x4 Symbolicname=CAT_INFO Language=German Informationen . MessageID=0x5 Symbolicname=CAT_ERR Language=German Fehler . MessageIdTypedef=DWORD MessageID=0x1000 Symbolicname=LIC_INFO Language=German Lizenzinformationen . MessageID=0x1001 Symbolicname=LIC_EXP Language=German Lizenzinformationen . MessageID=0x2000 Symbolicname=CALL_SiG Language=German Anruf signalisieren . MessageID=0x2001 Symbolicname=CALL_DBL Language=German Anruf bereits erfasst . MessageID=0x2002 Symbolicname=CALL_CAPI Language=German Anruf an CAPI . MessageID=0x2003 Symbolicname=CALL_PROCESS Language=German Anruf verarbeiten . MessageID=0x3000 Symbolicname=ERR_CAPI Language=German Capi Fehler . MessageID=0x3001 Symbolicname=ERR_PATH Language=German Speicherpfad kann nicht erstellt weren . MessageID=0x3002 Symbolicname=ERR_NOCAPI Language=German Keine CAPI gefunden . MessageID=0x3003 Symbolicname=ERR_UDP Language=German UDP_Empfangs_Port ist 0 .
Compile
ResourceEventlog.mc
withmc.exe
Compile
RecourceEventLog.rc
withbrcc32.exe
toResourceEventlog.res
Add
{$R RecourceEventlog.res}
to the main unit of my service applicationin the
AfterInstall
event, I create some Registry entries:Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Anrufmonitor] "EventMessageFile"="C:\\AM\\AMService.exe" "CategoryMessageFile"="C:\\AM\\AMService.exe" "CategoryCount"=dword:00000005 "TypesSupported"=dword:00000007
in my Service application I define some constants and use
TService.LogEvent()
to write messages to the eventlog:const CAT_ALL :WORD =$1; CAT_CALL :WORD =$2; CAT_LIC :WORD =$3; CAT_INFO :WORD =$4; CAT_ERR :WORD =$5; LIC_INFO :DWORD =$00001000; LIC_EXP :DWORD =$00001001; CALL_SIG :DWORD =$00002000; CALL_DBL :DWORD =$00002001; CALL_CAPI :DWORD =$00002002; CALL_PROCESS :DWORD =$00002003; ERR_CAPI :DWORD =$00003000; ERR_PATH :DWORD =$00003001; ERR_NOCAPI :DWORD =$00003002; ERR_UDP :DWORD =$00003003; ... LogMessage('test an eventlog-entry', EVENTLOG_INFORMATION_TYPE, CAT_CALL, CALL_PROCESS);
The eventlog entry is created successfully, but the "Event ID cannot be found" text still appears.