• 写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;
    }
    //---------------------------------------------------------------------------
  • 相关阅读:
    SpringBoot启动项目时提示:Error:java: 读取***.jar时出错;
    K8S操作
    二、kubernetes搭建集群
    三、Json方式函数
    一、Gulp
    大萨达所
    三、IIS通过目录方式部署以供外部调试
    四、附加到进程调试(.NET Framework)
    一、bootstrap-fontawesome-iconpicker组件
    表单
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/1551318.html
Copyright © 2020-2023  润新知