INFO: Impedir que a janela da consola que desaparece

Sumário

Quando uma aplicação de consola é iniciada a partir do Explorador do Windows NT File Manager, o Gestor de programas, ou escrevendo Iniciar < progname > a partir da linha de comandos, executa na respectiva consola. Esta consola desaparece assim que a aplicação terminar e, por conseguinte, o utilizador não é possível ler a nada escrito para o ecrã entre o último interromper e sair do programa. Existem duas abordagens para impedir que a janela da consola que desaparece.

Mais informações

Método 1: Parar se o processo está em execução na consola separado

O primeiro método é para implementar uma aplicação de consola para não terminar imediatamente quando está a ser executado numa janela de consola separado. Não é provável que pretende uma aplicação para colocar em pausa sempre depois de visualizar informações na janela da consola quando iniciado a partir da linha de comandos. No entanto, não existe nenhum API (interface de programação de aplicações) directamente determina se é ou não a aplicação de partilha uma consola com CMD. EXE. Este método de procura na localização actual do cursor da consola e, se é (0,0), em seguida, o programa assume que está a ser executado numa janela de consola separado.

Código de exemplo

   #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: Este método não funciona se o utilizador combina um ecrã clear (CLS) e execução da aplicação para um passo (por exemplo, [C:\] CLS & < progname >), uma vez que coloque o cursor irá ser (0, 0), mas a aplicação está a utilizar a consola, que pertence ao CMD. EXE.

Método 2: Inicie a consola com cmd.exe /K

Este método é iniciar uma aplicação de consola numa janela separada e forçar a janela para permanecer após a aplicação terminou. Uma aplicação pode utilizar a seguinte linha de comandos com WinExec (), CreateProcess(), ou num ficheiro batch:
cmd /K consoleapp.exe
Depois de consoleapp.exe tenha terminado, o parâmetro /K torna a janela de consola permanecer no ecrã. O utilizador da aplicação, em seguida, pode escrever o comando exitpara fechar a janela de consola.
Propriedades

ID do Artigo: 99115 - Última Revisão: 12/01/2017 - Revisão: 1

Comentários