Тема: AutoHotKey:отслеживание выхода из режима пониженного энергопотребления
Отслеживание выхода системы из режима пониженного энергопотребления
OnMessage(0x0218, "WM_POWERBROADCAST")
Return
WM_POWERBROADCAST(wParam, lParam)
{
PBT_APMRESUMECRITICAL := 0x0006
PBT_APMRESUMESUSPEND := 0x0007
PBT_APMRESUMEAUTOMATIC := 0x0012
If (wParam = PBT_APMRESUMEAUTOMATIC) Or (wParam = PBT_APMRESUMESUSPEND) Or (wParam = PBT_APMRESUMECRITICAL)
MsgBox, 262144, WM_POWERBROADCAST, Выход из спящего или ждущего режима
Return
}
Замечания:
* Согласно статьи MSDN WM_POWERBROADCAST Message не существует возможности определить в каком именно состоянии (Sleep, StandBy, Suspend, Hibernate) находилась система перед получением сообщения о выходе из состояния ожидания. Также сказано, что сведения об этом записываются в системный журнал событий [я этого, под Windows XP SP3, не наблюдал].
* Согласно статьи MSDN WM_POWERBROADCAST Message и статьи Handling OS events like Sleep, Stand-by, Hibernate, Power Status Changed, Low Battery, Critial Suspend, AC Power, Battery Power, Battery Life etc... in Windows XP and Vista, сообщение PBT_APMRESUMEAUTOMATIC должно приходить перед PBT_APMRESUMESUSPEND или PBT_APMRESUMECRITICAL. Однако до обработчика, описанного в вышеприведённом скрипте, оно, похоже, не доходит, — возможно, потому, что как раз по этому сообщению сам скрипт узнаёт, что можно продолжить работу.