2013-08-13 16 views
19

Potrzebuję wykryć tryb zasilania systemu. Mówiąc dokładniej, potrzebuję zdarzenia, które wystrzeliwuje, gdy okno 7 budzi się ze snu. Jestem już przy użyciu:Zdarzenie do wykrycia System obudzić się ze snu w C#

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; 

Ale problem z tym zdarzeniem jest to, że podniesione czterokrotnie: ewentualnie, gdy komputer przechodzi w tryb uśpienia i po komputer obudzi. Chcę wydarzenie, które powstaje tylko na komputerze. Czy jest na to jakieś wydarzenie?

+5

'PowerModeEventArgs' ma właściwość o nazwie' Mode' że można użyć, aby powiedzieć, jaki stan jego powrocie do – Sayse

+0

OK .. pozwól mi spróbować z tym .... daj znać :) – Pankaj

+0

możliwe duplikat [Skąd mogę wiedzieć, kiedy system Windows wchodzi w tryb uśpienia lub hibernacji?] (http://stackoverflow.com/questions/228288/how-can-i-know-when-windows-is-going- do trybu "przeszło-spać" lub "hibernować") –

Odpowiedz

7

Należy sprawdzić właściwość Mode obiektu PowerModeChangedEventArgs, która jest przekazywana do zdarzenia.

Od MSDN:

  • Resume System operacyjny ma zamiar wznowić od stanu zawieszenia.

  • StatusChange Zdarzenie powiadomienia o stanie trybu zasilania zostało podniesione przez system operacyjny. Może to oznaczać słabą lub ładującą się baterię, przejście między zasilaniem prądem zmiennym i baterią lub inną zmianę stanu zasilania systemu.

  • Suspend System operacyjny wkrótce zostanie zawieszony.

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

użyć tego kodu, aby wykonywać swoją pracę