WM_CLOSEで閉じれないウィンドウを閉じるには?

解決


あヵぃ  2004-04-08 11:33:17  No: 53445  IP: [192.*.*.*]

たとえばメモ帳の様に WM_CLOSE メッセージを送ったときに
「変更を保存しますか?」のようなダイアログが出るアプリを
強制終了するにはどうしたらよいでしょうか?

自分なりに考えて見たものの、ダイアログが出たら
キーイベントを合成して [いいえ(&N)] ボタンを
押したことにするような、無茶苦茶なのしか思いつきません(泣
これだと不都合があるので、、
タスクマネージャがやっているようなスマートな方法があるはずですが、
分からなくて、行き詰っています。

ヒントでもあれば助かります。
どなたかよろしくお願いいたします。

編集    削除
SELNA  2004-04-08 12:13:40  No: 53446  IP: [192.*.*.*]

メモ帳等のアプリのメッセージを横取り(フック)すればいいのではないでしょうか?

編集    削除
YuO  2004-04-08 22:05:15  No: 53447  IP: [192.*.*.*]

タスクマネージャもWM_CLOSEを送っているだけのようですが。
#Windows NT 4.0 Workstationで確認。
多分,SendMessageTimeoutあたりを利用しているのでしょう。

強制終了だけであればTerminateProcessでできますが,
とてもスマートな方法とは言えませんし……。

編集    削除
あヵぃ  2004-04-09 03:38:19  No: 53448  IP: [192.*.*.*]

ありがとうございます。

編集    削除
YuO  2004-04-09 04:41:56  No: 53449  IP: [192.*.*.*]

で,どうやって解決したのですか?

編集    削除
RAPT  2004-04-10 20:50:26  No: 53450  IP: [192.*.*.*]

TerminateProcessは「危険」な手段です。
環境によってはかなり不安定になるので、やむを得ない場合以外は
使わない方が好ましいと思います。

編集    削除
シャノン  2004-04-12 18:34:02  No: 53451  IP: [192.*.*.*]

確認したわけではありませんが…
WM_ENDSESSION を投げつける、とか。

メモ帳で編集中に windows を終了したときに、保存するかどうかのダイアログを WM_CLOSE あるいは WM_QUERYENDSESSION で出しているなら、問答無用で終了させられないかな、と思ったり。
まぁ、広い世の中、ひとつくらいは WM_ENDSESSION で保存チェックをしているひねくれ者があるかもしれませんが^^;

編集    削除