АТ> Программа в ждущем режиме НЕ работает, она ждет :)
> Мне не обязательно указывать системе "прекратить ждущий режим
> немедленно", достаточно предупредить её что в N часов
> (или через N часов) необходимо выйти из ждущего (хорошо
> бы и спящего режима)
> пока что более менее удобоваримый вариант
> CreateWaitableTimer и SetWaitableTimer.
Насколько я знаю, другого варианта все равно нет -
либо таймер, либо аппаратное событие.
> Если не в лом можно пояснения, т.к. после перевода
> Help'a мало что прояснилось.
>
Не совсем понятно, что требует пояснений. Таймер создается
вызовом CreateWaitableTimer(NULL,TRUE,NULL),
когда он будет не нужен, объект освобождается
функцией CloseHandle().
Ловится сообщение WM_POWERBROADCAST с параметром
PBT_APMSUSPEND, извещающим о переходе в ждущий
режим. В обработчике с помощью функции SystemTimeToFileTime()
или каким-нибудь другим способом формируется время
пробуждения и для запуска таймера вызывается
SetWaitableTimer(hTimer,&nTime,0,TimerProc,NULL,TRUE).
Опять же на обработчике WM_POWERBROADCAST с параметром
PBT_APMRESUMESUSPEND нужно деактивировать таймер,
на случай, если пробуждение вызвано
действиями пользователя.
Наконец, на обработчике TimerProc может потребоваться вызвать
SetThreadExecutionState, чтобы известить систему о том,
что она зачем-либо нужна. Например, указание флага
ES_USER_PRESENT не позволит снова уснуть.
Номер выпуска : 3995
Возраст листа : 499 (дней)
Количество подписчиков : 523
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/308442
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru