web-dev-qa-db-fra.com

Evénement pour détecter le réveil du système du sommeil en C #

J'ai besoin de détecter le mode d'état d'alimentation du système. Pour être précis, il me faut un événement qui se déclenche lorsque Windows 7 sort du sommeil. J'utilise déjà:

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

Mais le problème avec cet événement est qu'il est soulevé quatre fois: éventuellement lorsque l'ordinateur passe en mode veille et après le réveil de l'ordinateur. Je veux un événement qui est levé à l'ordinateur réveil seulement. Y a-t-il un événement pour cela?

22
Pankaj
SystemEvents.PowerModeChanged += OnPowerChange;

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

Vous devriez probablement lire ceci: http://msdn.Microsoft.com/en-us/library/Microsoft.win32.systemevents.powermodechanged.aspx

33
Marcus

Vous devez inspecter la propriété Mode de PowerModeChangedEventArgs qui est transmise à l'événement.

De MSDN:

  • Resume Le système d'exploitation est sur le point de sortir d'un état suspendu.

  • StatusChange Un événement de notification d'état en mode d'alimentation a été déclenché par le système d'exploitation. Cela pourrait indiquer un faible ou en charge batterie, une transition entre le courant alternatif et la batterie, ou un autre changement dans l'état de l'alimentation du système.

  • Suspend Le système d'exploitation est sur le point d'être suspendu.

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

Utilisez ce code pour faire votre travail

0
habib