Você está offline; aguardando reconexão

Como obter um identificador de janela (HWND) do console

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

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 124103 - Última Revisão: 07/11/2005 22:34:21 - Revisão: 1.3

Microsoft Platform Software Development Kit-January 2000 Edition

  • kbmt kbhowto kbwndw KB124103 KbMtpt
Comentários
/html> m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">