Hai mescolano termini. La "Console di Windows" non è un "cmd.exe", ma un "servizio" speciale che ha implementato, ad esempio, Win7, con "conhost.exe".
All'avvio di qualsiasi applicazione di console (non importa cmd, PowerShell o la propria app) Windows lo avvia in un ambiente speciale, che potrebbe avere una finestra della console visibile. Ma è sempre la console interna di Windows.
Ma! Gli emulatori della console possono afferrare questa finestra, nascondere la console reale e visualizzare la propria superficie emulata. Ad esempio, è possibile avviare ConEmu con interruttori speciali (descritti in SU, collegamento nel commento) ed è fatto.
sostituzione terminale predefinito
ConEmu ha una funzionalità denominata Default Terminal
. Se attivi questa funzione, avvierai senza problemi l'avvio dell'applicazione da Visual Studio nel terminale ConEmu. L'idea è di agganciare CreateProcess nell'applicazione di origine (explorer.exe
, vcexpress.exe
e così via, delimitarli con |
nelle impostazioni). Maggiori informazioni su questa funzione nel project wiki.
È possibile scegliere di utilizzare l'istanza di ConEmu esistente o di eseguire una nuova finestra per l'applicazione. E ConEmu può mostrare il messaggio Press Enter or Esc to close console...
sulla console dopo che l'applicazione è stata chiusa (la radio Always
). Non è più necessario aggiungere readline
alla fine del programma per vedere l'output.

cambiare il vostro codice di applicazione
Perché è il proprio programma, è possibile aggiungere, ad esempio, seguendo le linee alla testa della vostra funzione main
C++ esempio
#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# esempio
#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 simile su SuperUser http://superuser.com/q/445394/139371 – Maximus
I metodi riportati nella risposta qui sotto funzionano bene, però, vorrei che Visual Studio ha il supporto incorporato per la scelta di un soggetto terzo Console Emulatore per la visualizzazione di tutte le uscite dell'applicazione della console. (Non sono ancora sicuro se sto prendendo la mia terminologia qui, @Maximus! :-)) –
sì, ConEmu ... – Anubis