Você está aqui: Delphi ::: Win32 API (Windows API) ::: Formulários e Janelas |
Aprenda a usar a função EnumWindows() da API do Windows para listar todas as janelas de alto-nível abertas no momentoQuantidade de visualizações: 13239 vezes |
A função EnumWindows() da API do Windows pode ser usada para listar todas as janelas de alto-nível abertas no momento (ainda que não visíveis na tela). Veja sua assinatura:---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam ); Note que esta função requer um ponteiro para uma função de Callback a ser definida em nosso código Delphi. Podemos ainda usar o parâmetro lParam para passar uma referência a um determinada controle do formulário, tal como um TMemo ou TListBox. Veja a assinatura para a função de Callback: ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam ); Note que esta função de Callback é chamada para cada janela encontrada e nos permite acesso à janela sendo listada no momento por meio do parâmetro hwnd, que é um handle para a janela. Novamente podemos usar o parâmetro lParam para acessar o TMemo ou TListBox passado pela função EnumWindows. Vamos ao código agora. Veja como listar todas as janelas de alto-nível ativas no momento. Note que vamos exibir apenas as janelas que contenham um título (remova esta condição caso queira listar todas): ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // função de Callback usada para listar as fontes de // uma determinada família de fontes function EnumWindowsProc(Wnd: HWND; memo: TMemo): BOOL; stdcall; const MyMaxName = 256; MyMaxText = 256; var ClassName: string; WindowText: string; begin // vamos obter o nome de classe da janela SetLength(ClassName, MyMaxName); SetLength(ClassName, GetClassName(Wnd, PChar(ClassName), MyMaxName)); // vamos obter o título da janela SetLength(WindowText, MyMaxText); SetLength(WindowText, SendMessage(Wnd, WM_GETTEXT, MyMaxText, lParam(PChar(WindowText)))); // vamos exibir apenas as janelas que contenham título if WindowText <> '' then begin memo.Lines.Add('Nome da classe: ' + ClassName + ' - Título: ' + WindowText + ' - Handle: ' + IntToStr(Wnd)); end; // vamos passar para a próxima janela Result := True; end; procedure TForm1.Button1Click(Sender: TObject); begin // vamos listar todas as janelas de alto-nível em um TMemo EnumWindows(@EnumWindowsProc, lParam(Memo1)); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |