INFO: Impedisce che la finestra della Console che scompare

Riepilogo

Quando un'applicazione console viene avviata da Esplora File Manager, Program Manager di Windows NT oppure digitando < progname > avviare dal prompt dei comandi, viene eseguito nella propria console. Questa console scompaiono non appena termina l'applicazione e pertanto l'utente non può leggere quanto scritto nella schermata tra l'ultima pausa e termine del programma. Esistono due approcci per impedire che la finestra della console che scompare.

Ulteriori informazioni

Metodo 1: Pausa se il processo viene eseguito in una Console separata

Il primo metodo è per l'implementazione di un'applicazione console per non interrompere immediatamente quando viene eseguito in una finestra di console separata. Poiché è improbabile che desiderate sempre pausa dopo la visualizzazione di informazioni nella finestra della console quando è stato avviato dal prompt di un'applicazione. Tuttavia, non vi è alcuna API (interfaccia application programming interface) che direttamente determina o meno l'applicazione condivide una console con CMD. EXE Questo metodo cerca nella posizione corrente del cursore console e, se è (0,0), verrà automaticamente considerato che è in esecuzione in una finestra di console separata.

Codice di esempio

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

NOTA: Questo metodo non funzionerà se l'utente combina uno schermo clear (CLS) e l'esecuzione dell'applicazione in un solo passaggio (ad esempio, CLS [C:\] & < progname >), in quanto posizionare il cursore verrà essere (0, 0), ma l'applicazione sta utilizzando la console, che appartiene a CMD. EXE

Metodo 2: Avviare la console con cmd.exe /K

Questo metodo è per l'avvio di un'applicazione console in una finestra separata e forzando la finestra che deve rimanere dopo l'applicazione è terminata. Un'applicazione può utilizzare la seguente riga di comando con WinExec, CreateProcess (), o in un file batch:
CMD /K consoleapp.exe
Al termine di consoleapp.exe, il parametro /k rende la finestra della console rimane sullo schermo. L'utente dell'applicazione può quindi digitare il comando exitper chiudere la finestra di console.
Proprietà

ID articolo: 99115 - Ultima revisione: 12 gen 2017 - Revisione: 1

Feedback