アプリケーションの終了
あるトラブルでかなり昔(Win98から2000の頃)に作ったプログラムを調べていて気が付いたことが一つ。
このプログラムはネットワーク経由で他のPCのプログラムを起動したり終了したりするのですが、この終了処理に問題が起きました。
起動中のプログラムを別のプログラムから終了させる一般的な方法は
・プロセスリストを調べて終了させたい実行ファイルのプロセスIDを調べる。
・ウィンドウから上記プロセス所有のもの調べてにクローズメッセージを送る。
です。送るメッセージにはWM_CLOSEとWM_QUITがあるんです。後者を送ると一般的に強制終了と言うことになリます。つまり、WM_CLOSEだと普通のアプリケーションは修正済みのドキュメントがあれば保存しますかというダイアログを出します。これが嫌な場合にはWM_QUITを使うというのことなんで、私のプログラムも客先からの要望によってWM_QUITを送っていました。
ところがこの方法でパワーポイント2003を終了させようとすると終了したとたん"異常終了しましたので回復します"というメッセージが表示され再び起動してしまいます。
他に対処する方法を思いつかないのでしかたなくWM_CLOSEへの変更をすることにしました。
Windows環境はこの辺のつめが甘いのか考え方が違うのか非常にやっかいです。Macではアプリケーションがあってそのアプリケーションが自分の所有しているウィンドウを管理するという考え方で終了もアプリケーションにメッセージを送る方法が標準化されています。
この辺をきちんとしておいてくれると助かるのですが。
もっとも、マックの世界でも私の仕事でトラブルの元になることが一番多いのはマイクロソフトOfficeなのは同じですが(笑)。
| 固定リンク
| コメント (0)
| トラックバック (0)


最近のコメント