检测电源状态变化

检测Windows电源状态何时发生变化的最佳方法是什么?

我需要根据计算机是否进入待机/hibernate/关机状态执行某些操作

SystemEvents.PowerModeChanged事件应该执行您想要的操作

您可能还想查看SystemInformation.PowerStatus属性。

如果您需要睡眠事件,这会更好:

  private ManagementEventWatcher managementEventWatcher; private readonly Dictionary powerValues = new Dictionary { {"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(); }