INFO: Verhindert, dass das Konsolenfenster verschwinden

Zusammenfassung

Eine aus dem Datei-Manager, Programm-Manager Windows NT Explorer oder durch Eingabe in der Befehlszeile Starten < Progname > gestartet wird, werden in ihrer eigenen Konsole ausgeführt. Diese Konsole wird ausgeblendet, sobald die Anwendung beendet wird und daher der Benutzer nicht auf dem Bildschirm zwischen den letzten anhalten und Beenden des Programms geschrieben lesen kann. Es gibt zwei Ansätze zu dem Konsolenfenster verschwinden.

Weitere Informationen

Methode 1: Anzuhalten Sie, wenn der Prozess in Separate Konsole ausgeführt wird

Die erste Methode ist für die Implementierung ein Konsolenanwendungsprojekt berechtigt nicht sofort bei der Ausführung in einem separaten Konsolenfenster. Es ist nicht wahrscheinlich, dass eine Anwendung immer anhalten nach begann aus den Informationen im Konsolenfenster anzeigen möchten. Es gibt jedoch keine API (Application programming Interface), der direkt bestimmt, ob die Anwendung eine Konsole mit cmd teilt EXE. Diese Methode sucht an der aktuellen Position des Cursors Konsole und ist dies (0,0), dann die Anwendung wird angenommen, dass in einem separaten Konsolenfenster ausgeführt wird.

Beispielcode

   #include <windows.h>   #include <stdio.h>
#include <conio.h>

CONSOLE_SCREEN_BUFFER_INFO csbi;
HANDLE hStdOutput;
BOOL bUsePause;

void main(void)
{
hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
if (!GetConsoleScreenBufferInfo(hStdOutput, &csbi))
{
printf("GetConsoleScreenBufferInfo failed: %d\n", GetLastError());
return;
}

// if cursor position is (0,0) then use pause
bUsePause = ((!csbi.dwCursorPosition.X) &&
(!csbi.dwCursorPosition.Y));

printf("Interesting information to read.\n");
printf("More interesting information to read.\n");

// only pause if running in separate console window.
if (bUsePause)
{
int ch;
printf("\n\tPress any key to exit...\n");
ch = getch();
}
}

HINWEIS: Diese Methode funktioniert nicht, wenn Benutzer löschen (CLS) kombiniert und Ausführung der Anwendung in einem Schritt (z. B. [C:\] CLS & < Progname >), da den Cursor werden (0, 0), aber die Anwendung die Konsole cmd.exe gehört EXE.

Methode 2: Starten Sie die Konsole mit cmd.exe/k

Diese Methode ist eine in einem separaten Fenster und zwingt das Fenster bleiben, nachdem die Anwendung beendet wurde. Eine Anwendung kann die folgende Befehlszeile WinExec() CreateProcess(), oder in einer Batchdatei verwenden:
Cmd/k consoleapp.exe
Nach dem Abschluss consoleapp.exe macht der Befehlszeilenoption/k Konsolenfenster auf dem Bildschirm angezeigt. Der Benutzer kann den Befehl exit, um das Konsolenfenster zu schließen geben.
Eigenschaften

Artikelnummer: 99115 – Letzte Überarbeitung: 12.01.2017 – Revision: 1

Feedback