Windowsが終了する時に起動しているあるアプリケーションを終了させたいのですが・・。
というのも、Windowsの終了時は、起動中の全アプリケーションはWM_QUERYENDSESSION メッセージを受け取り、 WM_CLOSE メッセージは送られてきませんよね。でも、あるアプリケーションの機能上、WM_CLOSE メッセージを送ることにより終了したいのです。WM_QUITでもいいのですが。
よって、Windows終了時をWM_QUERYENDSESSION メッセージを受け取ったことにより把握し、PostMessageでそのアプリを終了させたいのですが、WM_QUERYENDSESSION メッセージを受け取った時というのが把握できません。
どうしたらよいでしょうか?
わかりにくい説明で申し訳ありません。
フォーム(非表示でもOK)をロードしておいて、
QueryUnloadイベントの引数で判定するとか。
Windows終了によるアプリの終了でもQueryUnloadイベントは通ってくれるのでしょうか?
自己解決してすみませんが、
WndProc(ByVal hwindow As Long, ByVal message As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
を使って、message にWM_QUERYENDSESSIONが来た時処理を行うようにしたら何とかできそうです。
ただ、このメッセージがくる順番ってアプリの起動した順番なんでしょうか?
起動している別のアプリより早く終了しなければ意味がないので。
何度も実験したら、起動した順にきました。
ツイート | ![]() |