//---------------------------------------------------------------------------
#pragma hdrstop
#include <tchar.h>
#include <windows.h>
//---------------------------------------------------------------------------
enum event_type
{
success = 0x0000,
error = 0x0001,
warning = 0x0002,
information = 0x0004,
audit_success = 0x0008,
audit_failure = 0x0010
};
class event_logger
{
private:
HANDLE h;
public:
event_logger(LPTSTR pszSrcName)
{
h = RegisterEventSource(NULL, // use local computer
pszSrcName); // event source name
}
~event_logger()
{
DeregisterEventSource(h);
}
void log(event_type eventtype, LPCTSTR szMsg,
DWORD dwEventID = 4, WORD wCategory = 0)
{
if (h == NULL)
{
return;
}
const char* strings[] = {szMsg};
WORD type = 4;
switch (eventtype)
{
case success:
type = 0;
case error:
type = 1;
case warning:
type = 2;
case information:
type = 4;
case audit_success:
type = 8;
case audit_failure:
type = 10;
}
// Report the event.
if (!ReportEvent(h, // event log handle
type, // event type
wCategory, // event category
dwEventID, // event identifier
NULL, // no user security identifier
1, // number of substitution strings
0, // no data
strings, // pointer to strings
NULL)) // no data
{
//Could not report the event.
}
}
};
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
//const char* strings[] = {"hwllo", "asdf", "eeee"};
//MyReportEvent("eeee", MSG_ERR_EXIST, 0, 3, strings);
event_logger log("电子");
log.log(information, "大家好啊!");
log.log(warning, "好啊!");
return 0;
}
//---------------------------------------------------------------------------
写windows事件的C++类
最新推荐文章于 2024-01-14 14:03:47 发布