Sie haben Begriffe mischen. Die "Windows-Konsole" ist keine "cmd.exe", sondern ein spezieller "Dienst", der zB von Win7 mit "conhost.exe" implementiert wurde.
Wenn Sie eine beliebige Konsole-Anwendung starten (spielt keine Rolle Cmd, Powershell oder Ihre eigene App) Windows startet es in einer speziellen Umgebung, die möglicherweise Konsolenfenster sichtbar haben. Aber es ist immer interne Windows-Konsole.
Aber! Konsolenemulatoren können dieses Fenster greifen, eine echte Konsole ausblenden und ihre eigene emulierte Oberfläche anzeigen. Zum Beispiel können Sie ConEmu mit speziellen Switches starten (beschrieben auf SU, link in comment) und fertig.
Standard Terminal Ersatz
ConEmu verfügt über eine Funktion namens Default Terminal
. Wenn Sie diese Funktion aktivieren, starten Sie Ihre Anwendung nahtlos aus Visual Studio im ConEmu-Terminal. Die Idee ist, CreateProcess in der Quellanwendung einzubinden (explorer.exe
, vcexpress.exe
usw., in den Einstellungen mit |
zu begrenzen). Lesen Sie mehr über dieses Feature in der project wiki.
Sie können die vorhandene ConEmu-Instanz verwenden oder ein neues Fenster für Ihre Anwendung ausführen. Und ConEmu kann Press Enter or Esc to close console...
Nachricht auf der Konsole zeigen, nachdem Ihre Anwendung beendet wird (das Always
Radio). Sie müssen readline
nicht mehr am Ende Ihres Programms hinzufügen, um die Ausgabe zu sehen.
Ändern der Anwendungscode
Weil es Ihr eigenes Programm ist, können Sie zum Beispiel folgende Zeilen in den Kopf Ihrer main
Funktion
C++ Beispiel hinzufügen
#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# Beispiel
#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
Ähnliche Q auf Super-User-http://superuser.com/q/445394/139371 – Maximus
Die in Antwort gegeben Methoden unten funktionieren, möchte ich jedoch Visual Studio integrierte in hatte die Unterstützung für eine dritte Partei-Konsole wählen Emulator zum Anzeigen der Ausgabe aller Konsolenanwendungen. (Immer noch nicht sicher, ob ich meine Terminologie hier richtig verstehe, @Maximus! :-)) –
yeah, ConEmu ... – Anubis