1

Тема: 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. Однако до обработчика, описанного в вышеприведённом скрипте, оно, похоже, не доходит, — возможно, потому, что как раз по этому сообщению сам скрипт узнаёт, что можно продолжить работу.