INFO: Evitando a janela do console de Desaparecidas

Traduções deste artigo Traduções deste artigo
ID do artigo: 99115 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Quando um aplicativo de console é iniciado a partir do Gerenciador de arquivos, o Gerenciador de programas, Windows NT Explorer, ou digitando início <progname> no prompt de comando, ele é executado no seu próprio console. Esse console desaparecerá assim que o aplicativo termina e, portanto, o usuário não pode ler nada gravados na tela entre o última pausa e sair do programa. Há duas abordagens para impedir que a janela do console desaparecendo.

Mais Informações

Método 1: Interromper se o processo está executando no console separado

O primeiro método é para implementar um aplicativo de console para não terminar imediatamente quando ele está sendo executado em uma janela de console separado. Não é provável que seria quiser que um aplicativo faça uma pausa sempre após exibir informações na janela do console quando iniciado a partir do prompt. No entanto, não há nenhuma API (application programming interface) que diretamente determina se ou não o aplicativo compartilha um console com cmd.exe. Esse método examina o local atual do cursor do console, e se é (0,0), em seguida, assumirá o programa que ele está sendo executado em uma janela de console 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();
      }
   }
				
Observação: Este método não funcionará se o usuário combina uma tela criptografada (CLS) e execução do aplicativo em uma etapa (por exemplo, [C:\] CLS & <progname>), como posicionar o cursor será ser (0, 0), mas o aplicativo está usando o console, que pertence a cmd.exe.

Método 2: Inicia o console com cmd.exe /K

Esse método é para iniciar um aplicativo de console em uma janela separada e forçar a janela para permanecer depois que o aplicativo foi finalizado. Um aplicativo pode usar a seguinte linha de comando com WinExec(), CreateProcess(), ou em um arquivo em lotes:
CMD /K consoleapp.exe
Após consoleapp.exe foi finalizado, a opção /K faz a janela do console ainda permaneça na tela. O usuário de aplicativo, em seguida, pode digitar o comando exit para fechar a janela do console.

Propriedades

ID do artigo: 99115 - Última revisão: terça-feira, 21 de novembro de 2006 - Revisão: 4.1
A informação contida neste artigo aplica-se a:
  • Interface de Programação de Aplicativos do Microsoft Win32 nas seguintes plataformas
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Palavras-chave: 
kbmt kbconsole kbinfo kbkernbase kbprogramming KB99115 KbMtpt
Tradução automática
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 99115

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com