アプリケーションの中止はできますか?

[戻る]
みちる [E-Mail] 2002/10/21(月) 22:20:37
動作中のアプリケーションを中止するプログラムをVC++で作りたいのですが、
こんなことできるのでしょうか?

YuO [E-Mail] 2002/10/21(月) 22:23:47
アプリケーションが外部から中止できるような処理を行っているのであれば可能です。

WM_CLOSEをトップレベルウィンドウに投げれば大抵のアプリケーションは終了しますが,確実ではないです。

みちる [E-Mail] 2002/10/21(月) 23:06:59
YuOさん、早々ご回答ありがとうございます。アプリケーション(現在実行している
xxx.exe)を、UNIXのKillコマンドみたいに、exe名を指定して終了させたのですが
WM_CLOSEはこれに適用できるのでしょうか?
たとえば、kill("word.exe")のように...

YuO [E-Mail] 2002/10/22(火) 01:40:46
Windowsの勉強が先かも……。
とりあえず,WM_CLOSEが何かわかっていないようですし。


Microsoft Knowledge Base JP175030を参考にProcess ID(PID)を取得して,
EnumWIndowsとGetWindowThreadProcessIdを経由すれば可能。

PIDからプロセスハンドルを生成して(OpenProcess),
TerminateProcessという手段はありますが,問題が起きる可能性があるので,お勧めできません。

みちる [E-Mail] 2002/10/22(火) 09:30:58
Yuoさん、ありがとうございます。
VC++ははじめてです。WM_CLOSEが何であるのかわかりません。
可能なことがわかっただけでも助かりました。
もうすこし勉強してからつづきを質問させていただきます。
またのフォローよろしくお願いします。

PATIO 2002/10/22(火) 09:48:20
UNIXの話が出ていますし、多分わかっていて言われているのだと思いますが、
UNIXでもKillでプロセスを殺すと何がしかの残骸が残って後始末が面倒なことに
なりますよね。
Windowsでも同様でプロセスを直接終わらせるようなことをすれば、残骸が残ります。
きちんと終了手順を踏んで終わらせるような手段をとらないと問題発生の原因になります。
そういう意味では、YuOさんが言われているようにWM_CLOSEだって確実でありませんし、
なぜ、そういうことがしたいのかという説明もないので適切な回答は出来ないと思いますよ。

tib 2002/10/22(火) 20:58:41
勉強する手間を惜しんでこういうツールを使ってみるとか。
http://www.sysinternals.com/ntw2k/freeware/pskill.shtml

古いスレッドには追加発言できません。