用于检测系统在C#中从睡眠状态唤醒的事件

时间:2013-08-13 10:03:47

标签: c# windows events

我需要检测系统电源状态模式。确切地说,我需要一个事件,当Windows 7从睡眠中醒来时会激活。我已经在使用:

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

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

3 个答案:

答案 0 :(得分:37)

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

答案 1 :(得分:7)

您需要检查传递给该事件的PowerModeChangedEventArgsMode属性。

来自MSDN:

  
      
  • Resume操作系统即将从暂停状态恢复。

  •   
  • StatusChange操作系统引发了电源模式状态通知事件。这可能表示弱或充电   电池,交流电源和电池之间的过渡,或其他变化   在系统电源的状态。

  •   
  • Suspend操作系统即将暂停。

  •   

答案 2 :(得分:0)

SystemEvents.PowerModeChanged += OnPowerModeChange;
private void OnPoweModerChange(object s, PowerModeChangedEventArgs e)
{
  if(e.Mode==PowerModes.Suspend)
  {
    //Apply your operation
  }
}

使用此代码完成工作