次の手順で、Delphi 2009の Windows シャットダウン メッセージWMQueryEndSessionを正しくインターセプトしています。
procedure TMyForm.WMQueryEndSession(var msg: TMessage);
この記事では、メッセージのLParamを調べることで、通常のシャットダウンとログオフを区別できることを示唆しています。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa376890%28v=vs.85%29.aspx
アップデート:
Windows XP Embeddedで実行するアプリケーションを開発していますが、私の場合、LParamは毎回 0 です。
Windows 7 または Windows XP Home でアプリケーションをテストすると、予想される $80000000 が得られます。
どんなポインタでも大歓迎です!