あなたが用語をミックスしました:
私は、2010年密接にこの(未回答)の質問に関連したプロ
のVisual Studioを使用しています。 "Windowsコンソール"は "cmd.exe"ではなく、 "conhost.exe"を使用してWin7などを実装した特別な "サービス"です。
コンソールアプリケーション(cmd、powershell、または自分のアプリケーションではありません)を起動すると、コンソールウィンドウが表示される特別な環境でウィンドウが起動します。しかし、それは常に内部のWindowsコンソールです。
しかし!コンソールエミュレータはこのウィンドウをつかんで、実際のコンソールを隠し、エミュレートされたサーフェスを表示することがあります。 たとえば、特別なスイッチ(SUで説明されています、コメント内のリンク)とその完了でConEmuを開始することができます。
デフォルトの端末交換
ConEmuはDefault Terminal
という名前の機能があります。この機能を有効にすると、ConEmu端末のVisual Studioからアプリケーションをシームレスに起動できます。考え方は、ソースアプリケーション(explorer.exe
、vcexpress.exe
など)にCreateProcessをフックして、設定で|
で区切ります。その機能の詳細についてはproject wikiをご覧ください。
既存のConEmuインスタンスを使用するか、アプリケーションの新しいウィンドウを実行するかを選択できます。また、ConEmuは、アプリケーション終了後にPress Enter or Esc to close console...
メッセージをコンソールに表示することができます(Always
ラジオ)。プログラムの最後にreadline
を追加する必要はなく、出力を確認することができます。アプリケーションコード
を変更
それはあなた自身のプログラムですので、あなたのmain
機能
C++の例の頭にライン以下、例えば、追加することが
#ifdef _DEBUG
if (IsDebuggerPresent())
{
STARTUPINFO si = {sizeof(si)}; PROCESS_INFORMATION pi = {};
if (CreateProcess(NULL,
_T("\"C:\\Program Files\\ConEmu\\ConEmu\\ConEmuC.exe\" /AUTOATTACH"),
NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
{ CloseHandle(pi.hProcess); CloseHandle(pi.hThread); }
}
#endif
C#の例
#if DEBUG
ProcessStartInfo pi = new ProcessStartInfo(@"C:\Program Files\ConEmu\ConEmu\ConEmuC.exe", "/AUTOATTACH");
pi.CreateNoWindow = false;
pi.UseShellExecute = false;
Console.WriteLine("Press Enter after attach succeeded");
Process.Start(pi);
Console.ReadLine();
#endif
スーパーユーザに同様のQ http://superuser.com/q/445394/139371作業罰金以下の回答で与えられた – Maximus
方法は、しかし、私は、Visual Studioは、内蔵した第三者コンソールを選択するためのサポートを望みますすべてのコンソールアプリケーション出力を表示するエミュレータ。 (私はここで私の用語を得ているのかまだ分かりません@Maximus!:-)) –
ええ、ConEmu ... – Anubis