DOSプロンプトを終了させるには?


ともとも  2002-06-07 08:53:59  No: 50222

初めて質問します。よろしくお願いします。
ShellExecute()やCreateProcess()で外部実行ファイル(Dosプロンプト上)を起動させたんですが、それを終了させれません。
PostMessage()やExitProcess()を使うと、ほかのアプリは終了させれるんですが、DOSプロンプトだけは何故か・・・終了させれる方法ってあるんですか?


いもちぃ  2002-06-07 18:31:31  No: 50223

command.comを実行対象として、パラメーターに実行したいファイルを入れると
だめですかね?


ともとも  2002-06-11 07:29:24  No: 50224

まず、ExitProcessって自分自身を終わらせるものなんですね。勘違いしてました。
試してみたのですが、やはりDOSウィンドウそのものは落ちないです。
最終手段でTerminateProcessで閉じることは出来るのですが、この方法は危険らしいので安全に落とす方法が今だ見つからず・・・
PostMessageでウィンドウ名を与えて、WM_QUITを送るとほかのウィンドウは落ちますが、DOSウィンドウだけはエラーが発生します。なんとか出来ないでしょうか?


YuO  2002-06-11 17:27:18  No: 50225

安全に終了させるためには,相手が自分で終了してくれる必要があります。

非Consoleプログラム相手にWM_CLOSE投げると終了する(ことが多い)のは,
通常WM_CLOSEの結果として,受け取ったウィンドウが自プロセスを終了させているためです。
#最終的にWM_QUITをメッセージループが受け付けてメッセージループから抜ける為。
Consoleプログラムの場合,通常メッセージループを持っていないですから,
他の方法で「終了してくれ」と要求する必要があります。
EventとかMutexとか……。


さなえ  2002-06-11 20:12:13  No: 50226

W2K VC6
CreateProcess でコンソールアプリを実行すると終了後 DOS画面も消えます。
スタートメニューから「ファイル名を指定して実行」を使用した場合もです。
OSに依存するのでしょうか?  (私何か誤解してます?)


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加