免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1602 | 回复: 4
打印 上一主题 下一主题

写windows事件的C++类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-19 01:44 |只看该作者 |倒序浏览
//---------------------------------------------------------------------------

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

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
2 [报告]
发表于 2011-01-19 09:03 |只看该作者
LZ要干啥?

论坛徽章:
0
3 [报告]
发表于 2011-01-19 10:21 |只看该作者
{:3_185:} 不错 之前做win32程序开发时 一直找这个东西 最后还是用了MFC...

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2011-01-19 11:11 |只看该作者
这里关心Windows的不多,发到那个Windows版又没人看

论坛徽章:
0
5 [报告]
发表于 2011-01-19 11:32 |只看该作者
lz要干什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP