INFO: Prevenir a janela de consola a partir de que desaparece

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 99115
Sumário
Quando uma aplicação de consola é iniciada ou a partir do Explorador do Windows NT File Manager, o Gestor de programas, ou escrevendo início <progname> na linha de comandos, executar na respectiva consola. Esta consola desaparece assim que a aplicação terminar e, por isso, o utilizador não é possível ler 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ção

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 não terminar imediatamente quando executado numa janela separada da consola. Não é provável que poderá uma aplicação para sempre interromper após visualizar informação para a janela de consola quando iniciou a partir da linha de comandos. No entanto, não existe nenhum API (application programming interface) que directamente determina se a aplicação partilha uma consola com cmd.exe. Este método procura na localização actual do cursor da consola e, se for (0,0), em seguida, o programa assume que está a ser executado numa janela separada da consola.

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ã de limpar (CLS) e execução da aplicação para uma só vez (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: Iniciar a consola com cmd.exe /K

Este método é para 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 terminou, o parâmetro /K efectua a janela de consola permanecer no ecrã. O utilizador da aplicação pode escreva o comando exit para fechar a janela da consola.

Propriedades

ID do Artigo: 99115 - Última Revisão: 11/21/2006 15:46:16 - Revisão: 4.1

Microsoft Win32 Application Programming Interface

  • kbmt kbconsole kbinfo kbkernbase kbprogramming KB99115 KbMtpt
Comentários