//--------------------------------------------------------------------------- #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; } //--------------------------------------------------------------------------- |