Как определить, будет ли Windows переходить в спящий режим или приостанавливаться? - PullRequest
15 голосов
/ 16 мая 2011

Я использую

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
    SystemEvents_PowerModeChanged
);

, чтобы сообщить, когда Windows приостанавливается. Но как узнать, входит ли он в спящий режим или приостанавливается?

Есть ли для этого метод .Net или PInvoke?

Ответы [ 2 ]

9 голосов
/ 31 мая 2011

Вы не можете определить разницу между режимом гибернации и приостановки.

Подробное обсуждение здесь .

Сообщение о том, что ваш вопрос предполагает ложную дихотомию:Это может быть спящий режим, приостановка или гибридный спящий режим ... и когда гибридный спящий переход из пользовательского кода в спящий режим в спящий режим даже не выполняется (на самом деле код может не выполняться, переход происходит в случае потери питания).

Таким образом, когда принимается решение о гибридном сне, система не знает, возобновится ли она из режима ожидания или спящего режима, и не может сказать вам, чего она не знает.

1 голос
/ 16 мая 2011

Согласно MSDN , значение e.Mode (ваш обработчик событий должен иметь второй параметр PowerChangedEventArgs e) будет перечислением одного из «Resume», «StatusChange» или «Приостановить».Тем не менее, он не предоставляет больше подробностей, чем это, поэтому можно предположить, что если состояние «Приостановить», то компьютер либо находится в спящем режиме, либо находится в спящем режиме.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...