我希望看到来自一个Delphi 5应用到Windows日志中记录的事件,并从另一篇文章在这里我看到,我可以使用TEventLogger
类来做到这一点。
但是,我找不到对语法的任何文件TEventLogger.LogMessage
过程,所以我不知道是什么的所有参数的意思是,如何使用它们,甚至什么可能的值是可用的。
我试着环顾四周,所有我觉得是从Embarcadero公司以说明该功能存在,但没有关于它的语法和MSDN是没有帮助,因为我只能找到的BizTalk版本,确实我没有好。
有没有人有一个帮助页面或信息,这可能会揭示什么,我可以用它做一些轻?
TEventLogger
是一个内部辅助类TService
。
您可以使用日志消息TService.LogMessage()
函数,而不是通过调用TEventLogger
直接。 的参数LogMessage()
直接匹配使用Win32 API的参数ReportEvent()
函数。
查看详情,在Win32 API文档。
如果你不是在写一个服务应用程序,那么你需要调用Win32 API RegisterEventSource()
和ReportEvent()
函数,而不是直接。
应用程序写入事件日志中的一个简单的例子:
procedure WriteToLog(Msg:string; EventId: Word = 0);
var
h: THandle;
begin
h := RegisterEventSource(nil, PChar(Application.ExeName));
if h > 0 then
try
ReportEvent(h, 0, 0, EventId, nil, 1, 0, @Msg, nil);
finally
DeregisterEventSource(h);
end;
end;
procedure TForm7.Button1Click(Sender: TObject);
begin
WriteToLog('* Blah Blah Blah *');
end;
但要注意的是不能与系统注册的事件ID会给这种困惑说明:
在源为事件ID(0)的描述(C:\ Documents和Settings \ fgaillard \我的文档\ RAD工作室\项目\ PROJECT1.EXE)不能被发现。 本地计算机可能没有必要的注册信息或消息DLL文件来从远程计算机显示消息。 您可以使用/ AUXSOURCE =标识来检索词描述; 详情请参阅帮助和支持。 以下信息是事件的一部分:*等等等等等等*。