たとえばメモ帳の様に WM_CLOSE メッセージを送ったときに
「変更を保存しますか?」のようなダイアログが出るアプリを
強制終了するにはどうしたらよいでしょうか?
自分なりに考えて見たものの、ダイアログが出たら
キーイベントを合成して [いいえ(&N)] ボタンを
押したことにするような、無茶苦茶なのしか思いつきません(泣
これだと不都合があるので、、
タスクマネージャがやっているようなスマートな方法があるはずですが、
分からなくて、行き詰っています。
ヒントでもあれば助かります。
どなたかよろしくお願いいたします。
メモ帳等のアプリのメッセージを横取り(フック)すればいいのではないでしょうか?
タスクマネージャもWM_CLOSEを送っているだけのようですが。
#Windows NT 4.0 Workstationで確認。
多分,SendMessageTimeoutあたりを利用しているのでしょう。
強制終了だけであればTerminateProcessでできますが,
とてもスマートな方法とは言えませんし……。
ありがとうございます。
で,どうやって解決したのですか?
TerminateProcessは「危険」な手段です。
環境によってはかなり不安定になるので、やむを得ない場合以外は
使わない方が好ましいと思います。
確認したわけではありませんが…
WM_ENDSESSION を投げつける、とか。
メモ帳で編集中に windows を終了したときに、保存するかどうかのダイアログを WM_CLOSE あるいは WM_QUERYENDSESSION で出しているなら、問答無用で終了させられないかな、と思ったり。
まぁ、広い世の中、ひとつくらいは WM_ENDSESSION で保存チェックをしているひねくれ者があるかもしれませんが^^;
ツイート | ![]() |