参见英文答案 >
Windows – CPU power management APIs 3个
我正在开发一个C#WPF应用程序,该应用程序将安装在连接了APC 1500 UPS的Windows 7机器上.在断电时,我需要应用程序在Windows 7关闭之前响应某些关闭活动.
我正在开发一个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("root\\CIMV2"); 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(); }