写Windows应用程序日志(event log)

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.com/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.com/Articles/32611/Log-Events-in-VC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值