Como obter um identificador de janela da consola (HWND)

Traduções de Artigos Traduções de Artigos
Artigo: 124103 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Poderá ser útil manipular uma janela associada uma aplicação de consola. A API do Win32 não fornece nenhum método directo para obter o identificador de janela associado uma aplicação de consola. No entanto, é possível obter o identificador de janela pelo FindWindow() chamada. Esta função obtém um identificador de janela baseado num nome da classe ou nome da janela.

Chame GetConsoleTitle() para determinar o título de consola actual. Em seguida, forneça o título da consola actual FindWindow().

Mais Informação

Uma vez que várias janelas poderão ter o mesmo título, deve alterar o título actual da janela de consola para um título exclusivo. Isto ajudará a impedir que o identificador de janela incorrecta devolvidos. Utilize SetConsoleTitle() para alterar o título da janela da consola actual. Aqui é o processo:
  1. Chame GetConsoleTitle() para guardar o título da janela da consola actual.
  2. Chame SetConsoleTitle() para alterar o título da consola para um título exclusivo.
  3. Chamada Sleep(40) para garantir o título da janela foi actualizado.
  4. Chamada FindWindow (NULL, uniquetitle) para obter o HWND esta chamada devolve o HWND--ou nulo se a operação falhou.
  5. Obter SetConsoleTitle() chamada com o valor a partir do passo 1, para restaurar o título da janela original.
Deve testar HWND resultante. Por exemplo, pode testar para ver se HWND devolvido corresponde ao processo actual chamar GetWindowText() o HWND e comparando o resultado com GetConsoleTitle().

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

Código de exemplo

A função seguinte obtém o identificador de janela de aplicação de consola actual (HWND). Se a função tiver êxito, o valor devolvido é o identificador da janela da consola. Se a função falhar, o valor devolvido é NULL. Alguns verificação de erros é omitido, para brevity.
   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

Artigo: 124103 - Última revisão: 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 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: 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