シャットダウンが開始されたかどうかを確認するwin32関数とは何ですか?シャットダウンが開始されたかどうかの確認
EDIT:Windowsサービス(COM)内で確認する必要があります。どうやってするか?
シャットダウンが開始されたかどうかを確認するwin32関数とは何ですか?シャットダウンが開始されたかどうかの確認
EDIT:Windowsサービス(COM)内で確認する必要があります。どうやってするか?
これを確認する実際のWin32関数はありません。
代わりに、シャットダウンが開始されると、WindowsはWM_QUERYENDSESSION
メッセージをすべてのアプリケーションに送信します。
このメッセージに応答して、たとえばシャットダウンをキャンセルできます。 (絶対に必要な場合を除き、これを行うべきではありませんが)
実際のシャットダウンの前に、WM_ENDSESSION
メッセージが送信されます。
WM_QUERYENDSESSION
の後に実際にシステムがシャットダウンすることが保証されていないため、このメッセージの後にのみクリーンアップを実行する必要があります。
編集: サービスからこれらのメッセージを聞きたい場合は、もう少し作業する必要があります。
サービスには通常ウィンドウがないため、既存のウィンドウメッセージキューにフックすることはできません。代わりに、ダミーウィンドウを作成する必要があります。ダミーウィンドウは、メッセージを処理し、それを使って上記のメッセージを処理するためのものです。
message-only windowsの詳細については、MSDNのドキュメントを参照してください。
Windowsサービス(COM)の内部を確認するにはどうすればよいですか? – devnull
ダミーウィンドウを作成し、そのメッセージをWindowProcでチェックする必要があります。 –
すばらしい説明をありがとう! – devnull