36

我需要检测系统电源状态模式。准确地说,我需要一个在 Windows 7 从睡眠中唤醒时触发的事件。我已经在使用:

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

但是这个事件的问题是它被提升了四次:可能是在计算机进入睡眠模式和计算机唤醒之后。我想要一个仅在计算机唤醒时引发的事件。有什么活动吗?

4

2 回答 2

58
SystemEvents.PowerModeChanged += OnPowerChange;

private void OnPowerChange(object s, PowerModeChangedEventArgs e) 
{
    switch ( e.Mode ) 
    {
        case PowerModes.Resume: 
        break;
        case PowerModes.Suspend:
        break;
    }
}

您可能应该阅读以下内容:http: //msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.powermodechanged.aspx

于 2013-08-13T10:14:42.907 回答
9

您需要检查传递给事件的Mode属性。PowerModeChangedEventArgs

来自 MSDN:

  • Resume 操作系统即将从挂起状态恢复。

  • StatusChange 操作系统已引发电源模式状态通知事件。这可能表示电池电量不足或正在充电、交流电源和电池之间的转换或系统电源状态的其他变化。

  • Suspend 操作系统即将挂起。

于 2013-08-13T10:07:23.470 回答