Я установил ожидающий таймер, чтобы разбудить Windows в заданное время как таковой:
if(SetWaitableTimer(hTimer, &liWhen, 0, NULL, NULL, TRUE))
{
if(GetLastError() == ERROR_NOT_SUPPORTED)
{
//Waking is not supported
}
}
Я запускаю этот код на планшете с Windows 8 Pro из собственного настольного приложения и получаю ERROR_NOT_SUPPORTED. Если я проигнорирую это, планшет не проснется в указанное время. Если я запускаю один и тот же код с рабочего стола Windows 7, он каждый раз просыпается.
Обратите внимание, что планировщик задач Windows на том же планшете с Windows 8 также имеет неактивную опцию «Разбудить компьютер для запуска этой задачи», но родное приложение календаря Windows 8 Metro, похоже, работает & будит этот планшет из сна без проблем.
Microsoft что-то изменила в поведении настольных приложений в Windows 8? Или они внедрили новые API для управления состоянием питания?
РЕДАКТИРОВАТЬ Найденный этот «жемчужина» от Microsoft о настольной активности модератора. Очевидно, что он приостанавливает все настольные приложения, которые не запускаются как службы, пока Windows 8 находится в новом режиме «подключенного ожидания». Что он не может ответить, так это как установить таймер для выхода из этого режима. Приложения Metro могут сделать это, но как насчет настольных приложений?
Задача ещё не решена.
Других решений пока нет …