admin管理员组文章数量:1353348
1. 创建Message DLL
(1) VS2012 -->newproject-->Visual C++ --> Win32 à Win32 Project, 项目命名为MyMessages, 点击OK.
(2) 设置application type 为DLL,additional option 为Empty Project, Finish.
(3) 设置项目属性, Configuration Property àlinker à advancedà No entry point, 设置为Yes。此为Resource DLL必须设置。
(4) Solution Explorer 中右击项目添加newitem, 选择Utility à text file,文件名及后缀为MyMessages.mc.
(5) 写*.mc文件。下面链接是微软给出的例子。
https://msdn.microsoft/en-us/library/windows/desktop/dd996907(v=vs.85).aspx
(6) 配置项目属性。 Configuration Properties à Build Eventsà Command line, 设为mc.exe MyMessages.mc 。
(7) Build 项目文件, 可以生成MyMessages.h 和MyMessages.rc文件。
(8) 将这两个文件添加添加到项目中,并重新生成,此时产生我们需要的MyMessages.dll.
2. 注册表中注册该Message dll.
(1) 在以下目录下新建项,命名为MyApp。
再为MyApp创建两个子项,并设值如图所示。其中EventMessageFile的值即为所生成Message dll 的路径。
3. 创建Client,写Windows应用程序日志。本例创建了控制台程序,在Unicode下编译。
#include "stdafx.h"
#include "windows.h"
#include "MyMessages.h" // 拷贝到Client项目中。
void ReportOneEvent(LPCTSTR szMsg)
{
HANDLE h = RegisterEventSource(NULL, _T("MyApp"));
if(h == NULL)
printf("register source error");
if (!ReportEvent(h,
EVENTLOG_ERROR_TYPE,
6,
MSG_BAD_COMMAND, //so the event description is "error three"
NULL,
1,
wcslen(szMsg),
&szMsg, //this szMsg("event test") is the event data
(void*)szMsg))
printf("event report error");
DeregisterEventSource(h);
}
int _tmain(int argc, _TCHAR* argv[])
{
ReportOneEvent(_T("Event Logging Test!"));
return 0;
}
编译运行后,打开windows事件日志,可以看到刚才所写的日志。
4. 参考链接
(1) Message DLL
(2) http://www.codeproject/Articles/32611/Log-Events-in-VC
版权声明:本文标题:写Windows应用程序日志(event log) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1743913269a2560780.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论