Пауза выключения Windows

Как я могу приостановить выключение достаточно долго для моего приложения? Я нашел пример, но это для Delphi - я не могу перевести его на C++.

1 ответ

Решение

Вот перевод C++Builder VCL кода Delphi:

class TForm1 : public TForm
{
  ..
protected:
    void __fastcall WMQueryEndSession(TWMQueryEndSession &Message);
    ..
public:
    ..
    BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_QUERYENDSESSION, TWMQueryEndSession, WMQueryEndSession)
    END_MESSAGE_MAP(TForm)
};

...

void __fastcall TForm1::WMQueryEndSession(TWMQueryEndSession &Message)
{
    Message.Result = TRUE;
    if ((Message.Unused & ENDSESSION_CRITICAL) == 0)
    {
        ShutdownBlockReasonCreate(Handle, L"please wait while muting...");

        Sleep(45000); // do your work here

        ShutdownBlockReasonDestroy(Handle);
    }
}
Другие вопросы по тегам