Как определить, будут ли окна спячки или приостановлены?
Я использую
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
SystemEvents_PowerModeChanged
);
чтобы указать, когда Windows приостанавливается. Но как узнать, идет ли он в спящий режим или приостановить?
Есть ли способ .Net или PInvoke для этого?
Ответы
Ответ 1
Вы не можете определить разницу между спящим и приостановить.
Подробное обсуждение здесь.
Сообщение о высылке заключается в том, что ваш вопрос предполагает ложную дихотомию: он может быть спящим, приостановленным или гибридным сном... и когда гибридные спящие переходы из suspend to hibernate user code даже не работают (на самом деле может быть не работает код, переход происходит в случае потери питания).
Итак, когда решение о гибридном сне происходит, система не знает, будет ли она возобновляться с приостановления или спячки, и она не может сказать вам, что она не знает.
Ответ 2
Согласно MSDN, значение e.Mode(ваш обработчик событий должен иметь второй параметр PowerChangedEventArgs
e) быть перечислением одного из "Resume", "StatusChange" или "Suspend". Однако, похоже, он не содержит более подробной информации, поэтому предполагается, что если статус Suspend, то компьютер либо спящий, либо спящий режим.
НТН,
Бенджамин