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?
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
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.
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