広告
知ってる人は教えて欲しい(笑)
NEMCHIはタスクトレイのアイコンコントロール用の隠しフォーム(スタートアップフォーム)と通知フォームの二つのフォームで構成されているが、イベントが起きる順番を見ると、先に通知フォームが閉じられようとして、そこで閉じるのに失敗(Closingイベントをキャンセル)すると、そこでWindowsの終了が続行されないようなのです。
WndProcをオーバーライドしてWM_ENDSESSIONをフックすればなんとかなるかなーと思ったけど、
通知フォームのClosingイベント→WndProcという順番で処理が進むので、結局最初のClosingのキャンセルで終了処理が止まるみたいで意味なし。WndProcのBaseクラスでClosingイベントなどが起きているのかなぁと思うのですが、実際はよく分かりません。
しかも、スタートアップフォームではClosingイベントがまったく発生していません。
ちょっと、まっさらなプロジェクトでも同じ順番でイベントが発生しているか見てみたのですが、これだとスタートアップフォームのClosing→通知ウィンドウのClosingと処理が進みます。うーんなぜ?!
このあたりC++で組んだ経験があると予想がつくのかもしれないけど、やったことないので試行錯誤です。
広告

