Pegar handle pelo o nome do exe de uma aplicação externa ?
Bom eu preciso pegar o handle de uma aplicação externa pelo nome do exe, lembrando que este exe do qual eu queira pegar o handle não tem janelas nem formularios, por isso eu preciso saber como pegar pelo nome do exe !
Dangardenal
Curtidas 0
Respostas
Martins
21/03/2006
Bom eu preciso pegar o handle de uma aplicação externa pelo nome do exe, lembrando que este exe do qual eu queira pegar o handle não tem janelas nem formularios, por isso eu preciso saber como pegar pelo nome do exe !
Tente fazer isso com o código abaixo:
procedure TForm1.Button4Click(Sender: TObject); var nHandle : THandle; begin nHandle := FindWindow( 0, ´Calculadora´ ); ShowMessage( IntToStr( nHandle ) ); end;
boa sorte!
GOSTEI 0
Martins
21/03/2006
Deveriam permitir-nos editar nossas mensagens, só para ressaltar q vc pode trocar o [b:92a3a7aa10][color=red:92a3a7aa10]0[/color:92a3a7aa10][/b:92a3a7aa10] por [color=blue:92a3a7aa10][b:92a3a7aa10]nil[/b:92a3a7aa10][/color:92a3a7aa10], seria té melhor, evitando ao compilador ter q transformá-lo.
procedure TForm1.Button4Click(Sender: TObject); var nHandle : THandle; begin nHandle := FindWindow( nil, ´Calculadora´ ); ShowMessage( IntToStr( nHandle ) ); end;
GOSTEI 0
Adriano Santos
21/03/2006
Deveriam permitir-nos editar nossas mensagens...
Pode crer Martins, mas como tem a prévia me acostumei...rsrs.
Em relação ao Handle do aplicativo, é isso mesmo cara, mas lembrando que só vai funcionar se o executável estiver ativo, ou seja, no caso da calculadora somente se ela estiver aberta.
A sua dúvida ficou um pouco sem explicação, diga exatamente o que necessita.
GOSTEI 0
Martins
21/03/2006
[quote:45a2732a87=´Adriano Santos´]
Em relação ao Handle do aplicativo, é isso mesmo cara, mas lembrando que só vai funcionar se o executável estiver ativo, ou seja, no caso da calculadora somente se ela estiver aberta.
A sua dúvida ficou um pouco sem explicação, diga exatamente o que necessita.[/quote:45a2732a87]
Isso mesmo [b:45a2732a87]Adriano[/b:45a2732a87] no caso a dica q eu postei só serve para pegar pelo título da Janela.
Nesse caso como o seu programa não tem uma Janela, muito menos um título, ele poderia ser localizado por sua [color=blue:45a2732a87][b:45a2732a87]Classe[/b:45a2732a87][/color:45a2732a87].
Boa sorte.
Em relação ao Handle do aplicativo, é isso mesmo cara, mas lembrando que só vai funcionar se o executável estiver ativo, ou seja, no caso da calculadora somente se ela estiver aberta.
A sua dúvida ficou um pouco sem explicação, diga exatamente o que necessita.[/quote:45a2732a87]
Isso mesmo [b:45a2732a87]Adriano[/b:45a2732a87] no caso a dica q eu postei só serve para pegar pelo título da Janela.
Bom eu preciso pegar o handle de uma aplicação externa pelo nome do exe, [color=red:45a2732a87][b:45a2732a87]lembrando que este exe do qual eu queira pegar o handle não tem janelas nem formularios[/b:45a2732a87][/color:45a2732a87], por isso eu preciso saber como pegar pelo nome do exe !
Nesse caso como o seu programa não tem uma Janela, muito menos um título, ele poderia ser localizado por sua [color=blue:45a2732a87][b:45a2732a87]Classe[/b:45a2732a87][/color:45a2732a87].
var nHandle : THandle; begin nHandle := FindWindow( Classe_do_Aplicativo, nil ); ShowMessage( IntToStr( nHandle ) ); end;
Boa sorte.
GOSTEI 0
Adriano Santos
21/03/2006
Nesse caso como o seu programa não tem uma Janela, muito menos um título, ele poderia ser localizado por sua [color=blue:d2c31c6038][b:d2c31c6038]Classe[/b:d2c31c6038][/color:d2c31c6038].
var nHandle : THandle; begin nHandle := FindWindow( Classe_do_Aplicativo, nil ); ShowMessage( IntToStr( nHandle ) ); end;
Pode crer, o ruim é saber a bendita classe...:D
GOSTEI 0
Martins
21/03/2006
Vamos esperar pelo retorno do colega, dependendo da resposta dele, eu arrumo tempo para preparar um exemplo básico e coloco aqui usando:
1 ListBox;
2 Button - 1 para pegar o handle do aplicativo e o outro para fechar o mesmo;
1 ListBox;
2 Button - 1 para pegar o handle do aplicativo e o outro para fechar o mesmo;
GOSTEI 0
Siam
21/03/2006
Essa eu não entendí direito.
Se o aplicativo não tem Forms, FindWindow irá buscar por qual classe ?
Se o aplicativo não tem Forms, FindWindow irá buscar por qual classe ?
GOSTEI 0
Adriano Santos
21/03/2006
Essa eu não entendí direito.
Se o aplicativo não tem Forms, FindWindow irá buscar por qual classe ?
[b:343a4381b8]siam[/b:343a4381b8] todo aplicativo tem uma classe, até onde sei, não necessariamente a classe não está ligada ao ter ou não uma janela. Experimente abrir o aplicativo WinSigth em Iniciar >> Programas >> Borland Delphi XX >> WinSigth32 este aplicativo lista pra você todas as janelas ativas, vai ver que várias não estaão presentes, ou seja, visiveis mas contem uma classe.
GOSTEI 0
Siam
21/03/2006
Mas vc pode fazer um aplicativo sem ter qualquer classe e gerar um .exe
Todo aplicativo possui um processo aberto pelo Windows que é sua Thread principal mas não necessariamente possui uma classe.
Executáveis que rodam sem janelas, nem devem ter Handles.
Todo aplicativo possui um processo aberto pelo Windows que é sua Thread principal mas não necessariamente possui uma classe.
Executáveis que rodam sem janelas, nem devem ter Handles.
GOSTEI 0