加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows 7中的断电事件… C#问题

发布时间:2020-12-14 05:39:30 所属栏目:Windows 来源:网络整理
导读:参见英文答案 Windows – CPU power management APIs????????????????????????????????????3个 我正在开发一个C#WPF应用程序,该应用程序将安装在连接了APC 1500 UPS的Windows 7机器上.在断电时,我需要应用程序在Windows 7关闭之前响应某些关闭活动. 我可以直
参见英文答案 > Windows – CPU power management APIs????????????????????????????????????3个
我正在开发一个C#WPF应用程序,该应用程序将安装在连接了APC 1500 UPS的Windows 7机器上.在断电时,我需要应用程序在Windows 7关闭之前响应某些关闭活动.

我可以直接处理Windows事件,还是需要与APC软件进行交互?如果是Windows,会发生什么事?任何链接或信息将不胜感激 – 我只是在搜索时没有看到太多.

谢谢.

解决方法

也许这有用吗?

private ManagementEventWatcher managementEventWatcher;
    private readonly Dictionary<string,string> powerValues = new Dictionary<string,string>
                         {
                             {"4","Entering Suspend"},{"7","Resume from Suspend"},{"10","Power Status Change"},{"11","OEM Event"},{"18","Resume Automatic"}
                         };
    public void InitPowerEvents()
    {
        var q = new WqlEventQuery();
        var scope = new ManagementScope("rootCIMV2");

        q.EventClassName = "Win32_PowerManagementEvent";
        managementEventWatcher = new ManagementEventWatcher(scope,q);
        managementEventWatcher.EventArrived += PowerEventArrive;
        managementEventWatcher.Start();
    }
    private void PowerEventArrive(object sender,EventArrivedEventArgs e)
    {
        foreach (PropertyData pd in e.NewEvent.Properties)
        {
            if (pd == null || pd.Value == null) continue;
            var name = powerValues.ContainsKey(pd.Value.ToString())
                           ? powerValues[pd.Value.ToString()]
                           : pd.Value.ToString();
            Console.WriteLine("PowerEvent:"+name);
        }
    }
    public void Stop()
    {
        managementEventWatcher.Stop();
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读