INFO: Zabránit vymizení okna konzoly

Souhrn

Při spuštění aplikace konzoly z programu Správce souborů, Správce programů Windows NT Explorer nebo zadáním < progname > spustit z příkazového řádku, spustí se ve vlastní konzole. Tato konzola zmizí, jakmile ukončí aplikaci, a proto nelze uživatele číst nic zapsány do obrazovky mezi poslední pozastavení a ukončení programu. Existují dva přístupy k vymizení nechejte okno konzoly.

Další informace

Metoda 1: Pozastavit, pokud je spuštěn proces v samostatných konzoly

První metoda je určena pro aplikace konzoly nelze ukončit okamžitě, když je spuštěn v okně konzoly samostatné implementace. Není pravděpodobné, že je vhodné žádost o pozastavení vždy po zobrazení informací do okna konzoly, při spuštění z příkazového řádku. Existuje však žádné API (rozhraní pro programování aplikací), které přímo určuje, zda aplikace sdílí konzoly s CMD. EXE. Tato metoda vypadá do aktuálního umístění kurzoru konzoly a pokud je (0,0), pak program předpokládá, že je spuštěn v okně samostatné konzoly.

Ukázkový kód

   #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();
}
}

POZNÁMKA: Tato metoda nebude fungovat, pokud uživatel kombinuje vymazat obrazovku (specifikace CLS) a spuštění aplikace do jednoho kroku (například [C:\] CLS & < progname >), protože umístěte kurzor bude být (0, 0), ale používá aplikace konzoly, který patří do příkazového řádku EXE.

Metoda 2: Spuštění konzoly programu cmd.exe /K

Tato metoda slouží ke spuštění aplikace konzoly v samostatném okně a vynucení okno zůstat po aplikaci ukončil. Aplikace můžete použít následující příkazový řádek s WinExec() CreateProcess(), nebo v dávkovém souboru:
příkaz cmd /K consoleapp.exe
Po dokončení consoleapp.exe, přepínače /K provede konzoly okno zůstane na obrazovce. Uživatel aplikace může potom zadejte příkaz exitzavřete okno konzoly.
Vlastnosti

ID článku: 99115 - Poslední kontrola: 12. 1. 2017 - Revize: 1

Váš názor