INFO: Verhinderen dat het consolevenster verdwijnen

Samenvatting

Wanneer een console-programma wordt gestart vanuit de File Manager, de beheerder van het programma Windows NT Verkenner of < progname > starten vanaf de opdrachtprompt typt, wordt deze uitgevoerd in een eigen console. Deze console verdwijnt zodra de toepassing wordt beëindigd, en dus de gebruiker niet geschreven naar het scherm tussen de laatste onderbreken en het programma afsluiten lezen kan. Er zijn twee manieren om te voorkomen dat het consolevenster verdwijnen.

Meer informatie

Methode 1: Als het proces wordt uitgevoerd in afzonderlijke Console onderbreken

De eerste methode is voor de uitvoering van een consoletoepassing wordt niet onmiddellijk wanneer deze wordt uitgevoerd in een afzonderlijke consolevenster. Het is niet waarschijnlijk dat u een toepassing altijd onderbreken wilt nadat gegevens naar het consolevenster weergegeven wanneer u vanaf de opdrachtprompt gestart. Er is echter geen API (application programming interface) die direct wordt bepaald of de toepassing een console met CMD. deelt EXE. Met deze methode wordt gekeken naar de huidige locatie van de cursor console en als het (0,0), vervolgens het programma wordt ervan uitgegaan dat wordt uitgevoerd in een afzonderlijke consolevenster.

Voorbeeld van Code

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

OPMERKING: Deze methode werkt niet als de gebruiker een combinatie van een helder scherm (CLS) en uitvoering van de toepassing in één stap (bijvoorbeeld [C:\] CLS & < progname >), omdat de positie van de cursor worden (0, 0), maar de toepassing gebruikmaakt van de console, die deel uitmaakt van Cmd.exe EXE.

Methode 2: Start de console met cmd.exe /K

Deze methode is voor een console-programma in een afzonderlijk venster starten en het forceren van het venster om te blijven nadat de toepassing is beëindigd. Een toepassing kan de volgende opdrachtregel gebruiken met WinExec(), CreateProcess(), of in een batchbestand:
cmd /K consoleapp.exe
Nadat consoleapp.exe is beëindigd, wordt de schakeloptie /K het consolevenster op het scherm blijft staan. De toepassingsgebruiker kunt Typ de opdracht exitom de consolevenster te sluiten.
Eigenschappen

Artikel-id: 99115 - Laatst bijgewerkt: 12 jan. 2017 - Revisie: 1

Feedback