Windows終了時を知るには?

解決


juice  2003-05-30 02:06:58  No: 78089

Windowsが終了する時に起動しているあるアプリケーションを終了させたいのですが・・。
というのも、Windowsの終了時は、起動中の全アプリケーションはWM_QUERYENDSESSION メッセージを受け取り、 WM_CLOSE メッセージは送られてきませんよね。でも、あるアプリケーションの機能上、WM_CLOSE メッセージを送ることにより終了したいのです。WM_QUITでもいいのですが。

よって、Windows終了時をWM_QUERYENDSESSION メッセージを受け取ったことにより把握し、PostMessageでそのアプリを終了させたいのですが、WM_QUERYENDSESSION メッセージを受け取った時というのが把握できません。
どうしたらよいでしょうか?

わかりにくい説明で申し訳ありません。


魔界の仮面弁士  2003-05-30 02:51:44  No: 78090

フォーム(非表示でもOK)をロードしておいて、
QueryUnloadイベントの引数で判定するとか。


juice  2003-05-30 03:03:57  No: 78091

Windows終了によるアプリの終了でもQueryUnloadイベントは通ってくれるのでしょうか?

自己解決してすみませんが、
WndProc(ByVal hwindow As Long, ByVal message As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
を使って、message にWM_QUERYENDSESSIONが来た時処理を行うようにしたら何とかできそうです。

ただ、このメッセージがくる順番ってアプリの起動した順番なんでしょうか?
起動している別のアプリより早く終了しなければ意味がないので。

何度も実験したら、起動した順にきました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加