2012-11-29 9 views
6

Win32以外のコンソールアプリケーション(AFAIK、Win32アプリケーションのコンソールがexeにリンクされている)をコンソールから起動すると、cmd.exeはすぐにコマンドプロンプトに戻り、アプリケーションをバックグラウンドで実行します起動しているcmdシェルにコンソール以外のWin32アプリケーションを接続することはできますか?

コンソール以外の実行可能ファイルでは、それがcmd.exeから起動されたことを検出し、それを起動に「添付」することは可能ですか? cmd.exe?

これに関連するさまざまな質問/回答がありますが、この正確なアプローチは調査されていないようです。 (おそらくそれはそうではないかもしれません)

+1

実際にはうまく動作しません。コンソール上でのプロセスの競合を避けるには、「start/wait yourapp.exe」を使用する必要があります。シンプルで決して失敗しない方法は、/ Subsystem:アプリケーションのコンソールビルドをパスに入れておくことです。 –

答えて

5

これは非常に簡単に行うことができます。 ATTACH_PARENT_PROCESSAttachConsoleに渡すだけです。

最終結果が賢明か実用的かどうかは、私が言うことができないものかどうか。どちらのプロセスも同じコンソールに読み書きしてしまい、かなり奇妙になる可能性があります。

+0

それは意味がありますか? cmd.exeプロセスは、添付された他のプロセスを認識しませんでしたか?どちらのプロセスも同じコンソールから独立して読み書きを行いますか? –

+0

私はそれが意味をなさないと確信しています。あなたが言うように、両方のプロセスが同じコンソールを使用することができます。 –

+0

誰かがコンソールウィンドウを閉じた場合、それに接続されたアプリケーションも閉じます。 –

関連する問題