Descobrindo a janela ativa na área de Trabalho.


Precisando saber qual a janela ativa no desktop ???

Vamos mostrar um pequeno projeto que permite encontrar qual a janela ativa. No projeto vamos usar um controle Timer que aciona a cada 10 segundos a API GetForeGround para determina a janela e a seguir faz uma chamada a API GetWindowText para obter o título da janela. Vam os dar uma olhada nas API´s :

GetForeGround - função que retorna o identificador da janela ativa.

GetWindowText - Esta função copia o texto do título da janela para um buffer. Se a janela for um controle o texto do controle será copiado.

Usamos a janela de depuração ( Debug.Print) para exibir os títulos das janelas . Assim Você pode ver facilmente qual a janela esta ativa. Você pode fazer esta monitoração de forma transparente ao usuário.

- Inicie um novo projeto no Visual Basic e no formulário padrão insira um controle Timer

- Faça a declaração para as API´s usadas no formulário conforme o código abaixo:

private Declare Function GetForegroundWindow Lib "user32" () as Long
private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (byval hwnd as _ Long, byval lpString as string, byval cch as Long) as Long

- No evento Load do formulário vamos definir o intervalo para a chamada das API´s . Usamos 100 ou seja 10 s.

private Sub Form_Load()
Timer1.Interval = 100
End Sub

- No evento Timer do controle - Timer1 - insira o código que faz a chamada as API´s:

private Sub Timer1_Timer()
static lHwnd as Long
Dim lCurHwnd as Long
Dim sText as string * 255
'
lCurHwnd = GetForegroundWindow
If lCurHwnd = lHwnd then Exit Sub
lHwnd = lCurHwnd
If lHwnd <> hwnd then
    Caption = "Janela Ativa: " & Left$(sText, GetWindowText(lHwnd, byval sText, 255))
else
    Caption = "Janela Ativa : Form1"
End If
End Sub

Execute o projeto e vá abrindo as janelas , perceba que na janela immediate o nome do titulo da janela esta sendo exibido indicando que esta é a janela ativa.

Só isto , até mais...


José Carlos Macoratti