Событие, чтобы обнаружить, что система просыпается от сна в С#
Мне нужно определить режим состояния системы. Чтобы быть точным, мне нужно событие, которое срабатывает, когда окна 7 просыпаются от сна. Я уже использую:
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
Но проблема с этим событием заключается в том, что он поднимается четыре раза: возможно, когда компьютер переходит в спящий режим и после того, как компьютер просыпается. Я хочу событие, которое поднимается только на компьютере. Есть ли какое-нибудь событие для этого?
Ответы
Ответ 1
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
Ответ 2
Вам нужно проверить свойство Mode
PowerModeChangedEventArgs
, которое передается этому событию.
Из MSDN:
-
Resume
Операционная система вот-вот вернется из приостановленного состояния.
-
StatusChange
Событие уведомления о состоянии режима питания было вызвано операционной системой. Это может означать слабое или зарядное батарея, переход между питанием от сети переменного тока и аккумулятором или другое изменение в состоянии питания системы.
-
Suspend
Операционная система будет приостановлена.
Ответ 3
SystemEvents.PowerModeChanged += OnPowerModeChange;
private void OnPoweModerChange(object s, PowerModeChangedEventArgs e)
{
if(e.Mode==PowerModes.Suspend)
{
//Apply your operation
}
}
Используйте этот код для выполнения своей работы