zoukankan      html  css  js  c++  java
  • 写windows事件的C++类

    //---------------------------------------------------------------------------

    #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;
    }
    //---------------------------------------------------------------------------
  • 相关阅读:
    [转载]Javascript:history.go()和history.back()的用法和区别
    微信商户平台,开通企业付款到用户功能
    使用ASP.Net WebAPI构建REST服务——客户端
    在WebAPI使用Session
    在asp.net一般应用程序中使用session
    Web Api Post注意事项
    WebAPI返回数据类型解惑
    c#中const与readonly区别
    sql之left join、right join、inner join的区别
    C#实现json的序列化和反序列化
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/1551318.html
Copyright © 2011-2022 走看看