Como obter um identificador de janela (HWND) do console

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

Neste artigo

Sumário

Pode ser útil manipular uma janela associada a um aplicativo de console. A API Win32 não fornece nenhum método direto para obter o identificador de janela associado a um aplicativo de console. No entanto, você pode obter o identificador de janela por chamada FindWindow(). Esta função recupera um identificador de janela baseado em um nome de classe ou o nome da janela.

Chame GetConsoleTitle() para determinar o título atual do console. Em seguida, forneça o título atual do console para FindWindow().

Mais Informações

Como várias janelas podem ter o mesmo título, você deve alterar o título atual da janela do console para um título exclusivo. Isso ajudará a impedir que o identificador de janela incorreta que está sendo retornado. Use SetConsoleTitle() para alterar o título da janela console atual. Aqui é o processo:
  1. Chame GetConsoleTitle() para salvar o título da janela console atual.
  2. Chame SetConsoleTitle() para alterar o título do console para um título exclusivo.
  3. Chamada Sleep(40) para garantir o título da janela foi atualizado.
  4. Chamada de FindWindow (NULL, uniquetitle) para obter o HWND esta chamada retorna o HWND--ou NULL se a operação falhou.
  5. Chamada SetConsoleTitle() com o valor recuperado da etapa 1, para restaurar o título da janela original.
Você deve testar o HWND resultante. Por exemplo, você pode testar para ver se o HWND retornado corresponde com o processo atual chamando GetWindowText() no HWND e comparar o resultado com GetConsoleTitle().

Não é garantido que o HWND resultante ser adequado para todas as operações de identificador de janela.

Código de exemplo

A função a seguir recupera o identificador da janela de aplicativo do console atual (HWND). Se a função obtiver êxito, o valor de retorno será o identificador da janela do console. Se a função falhar, o valor de retorno será NULL. Alguns verificação de erros for omitido, por questões de brevidade.
   HWND GetConsoleHwnd(void)
   {
       #define MY_BUFSIZE 1024 // Buffer size for console window titles.
       HWND hwndFound;         // This is what is returned to the caller.
       char pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
                                           // WindowTitle.
       char pszOldWindowTitle[MY_BUFSIZE]; // Contains original
                                           // WindowTitle.

       // Fetch current window title.

       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);

       // Format a "unique" NewWindowTitle.

       wsprintf(pszNewWindowTitle,"%d/%d",
                   GetTickCount(),
                   GetCurrentProcessId());

       // Change current window title.

       SetConsoleTitle(pszNewWindowTitle);

       // Ensure window title has been updated.

       Sleep(40);

       // Look for NewWindowTitle.

       hwndFound=FindWindow(NULL, pszNewWindowTitle);

       // Restore original window title.

       SetConsoleTitle(pszOldWindowTitle);

       return(hwndFound);
   }
				

Propriedades

ID do artigo: 124103 - Última revisão: segunda-feira, 11 de julho de 2005 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft Platform Software Development Kit-January 2000 Edition
Palavras-chave: 
kbmt kbhowto kbwndw KB124103 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: 124103

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