Pegando a Janela que esta em execução no Windows com C#
Olá,
Estarei demonstrando nestes post como pegar uma janela de um programa que esteja em execução no Windows. Neste exemplo para demostrar a janela eu irei usar o Caption da Janela ( Texto da Barra Superior). Crie um Form com os seguintes campos, 5 labels e 1 button e 1 Timer, deixe o formulário desta forma:
Para que nossa demo funcione precisamos importar o namespace System.Runtime.InteropServices conforme a tabela abaixo:
|
usingSystem.Runtime.InteropServices; |
Agora precisamos chamar dois métodos estáticos externos da DLL User32
[ DllImport("user32.dll") ] static extern int GetForegroundWindow(); [ DllImport("user32.dll") ] static extern int GetWindowText(int hWnd, StringBuilder text,int count); |
O GetForegroundWindows retorna um handle para a janela com o qual o usuário está trabalhando atualmente.
O GetWindowText copia o texto da barra de titudo da janela especificada para um buffer.
Uma vez feito isso iremos implementar os métodos para pegar a Janela especificada, ficando assim:
private void BuscarJanelaAtiva() { const int nChars = 256; int handle = 0; StringBuilder Buff = new StringBuilder(nChars); handle = GetForegroundWindow(); if ( GetWindowText(handle, Buff, nChars) > 0 ) { this.captionWindowLabel.Text = Buff.ToString(); this.IDWindowLabel.Text = handle.ToString(); } } |
Agora no Timer que vc inseriu na pagina faça a chamada para o método BuscarJanelaAtiva
private void timer1_Tick(object sender, System.EventArgs e) { BuscaJanelaAtiva(); } |
Nota: Eu deixe o Timer com a configuração no Intervalo de 100 m/s.
Agora implemente no Botão Sair o código abaixo para fechar o formulário
private void sair_Click(object sender, System.EventArgs e) { this.Close(); } |
Pronto, já pode rodar seu programa e efetuar os testes, parece bem simples mas acredite este pequeno exemplo é muito perguntado nos fóruns de desenvolvimento em .NET.
