今回は、ユーザがマウス操作でWindowsの終了を選択したときやExitWindowsを呼び出したときに 呼ばれるメッセージについて解説します。
Windowsを終了させる前にOSは各々のプログラムにWM_QUERYENDSESSIONメッセージを 送ります。プログラム側ではWindowsを終了させても良い場合はTRUEを、終了させてはいけない場合はFALSEを 返戻値として与えます。アプリケーションの中で一つでもFALSEがあった場合はWindowsはシャットダウン できません。
次に、WM_QUERYENDSESSIONの返戻値の結果を踏まえてOSは本当にシャットダウンするかどうかの結果を WM_ENDSESSIONを通して各プログラムに伝えます。 WPARAMの値がTRUEならば本当に終了する、FALSEならば終了しないという意味になります。
以下にメッセージ処理の例を示します。
case WM_QUERYENDSESSION: MessageBox(hwnd,"終了させないよ","",MB_OK); return FALSE; break; case WM_ENDSESSION : if(wParam==FALSE) MessageBox(hwnd,"俺の言ったとおりだろう","",MB_OK); break; |
これで、メニューからクリックしてシャットダウンすることは防げるみたいなんですがCtrl+Alt+Delで 再起動することを中止させるのは無理でした。