Fórum Handle !!!! #143926
10/03/2003
0
O que vem a ser o Handle !!!!!
[]´s
Anonymous
Curtir tópico
+ 0Posts
10/03/2003
Anonymous
existem varios tipos de handles, qnd vc programa em c++ e nao tem
algo como uma vcl, vc cria janelas atravez da API CreateWindowEx,
essa funcao retorna o HANDLE que identifica a janela e para vc enviar
mensagem, mudar o estilo e o texto, vc presisa do HANDLE.
De uma pesquisa no help da API que vem com o delphi, o meu texto
ta meio confulso mas, ´faz parte´
falow
Gostei + 0
10/03/2003
Nildo
Com um handle é possível fazer varias coisas como:
Colocar uma janela (Calculadora por exemplo) dentro de um TPanel de seu Form. (Caso queria o codigo me pessa. eu coloco aqui). Voce pode ter um controle sobre qualquer coisa sobre um handle: Saber se está visivel (Ex.: Se o bloco de notas está aberto), saber se está Enabled ou disabled, e qualquer otura coisa como o Left, o width, etc. E você pode obter informações sobre o handle do bloco de notas por exemplo, saber o Left dele, etc. Você pode colocar um botão de seu formulário dentro do Bloco de notas ou da calculadora, em fim qualquer outra janela. É muito interessante. Todos os profissionais avançados em delphi, que trabalham com HOOK por exemplo, é obrigado a saber mecher com handle.
Ahh você pode também modificar o estado do Bloco de notas (por exemplo) mudando seu Width da janela, abilitando, desabilitando, escondendo, mostrando, minimizar, maximizar, fechar, etc.. Tudo a partir de seu programa. Em fim, pode fazer de tudo com outra janela =P
Quaquer duvida sobre como fazer este tipos de coisas, me avise.
Gostei + 0
12/10/2004
Tatuweb
Nildo vc ainda tem esse código? Ou alguém que esteja vendo sabe como fazer?
Gostei + 0
13/10/2004
Nildo
windows.SetParent( FindWindow( nil, ´Calculadora´ ), panel1.handle )
Gostei + 0
13/10/2004
Paulo_amorim
Pow legal isso... tinha usado Handle em algumas funções que pediam o Handle, mas sempre daquele jeito ´burro´ sem saber realmente o que estava fazendo!
No caso de eu abrir várias instâncias de um programa, como o Notepad, cada janela terá seu Handle diferente então?
Como diferenciar uma da outra, daí?
Até+
Gostei + 0
13/10/2004
Nildo
Gostei + 0
13/10/2004
Fórum Vini
Só explicando melhor: Você não consegue pegar o Handle das duas usando o FindWindow(porque as duas janelas vão ter o mesmo caption(nem sempre) e o mesmo nome de classe), ele sempre vai retornar o handle da primeira( ou da última, não me lembro da ordem ).. Mas fazendo uma pesquisa usando GetNextWindow você consegue achar as duas separadamente...
Gostei + 0
09/04/2005
Marco Salles
http://forum.clubedelphi.net/viewtopic.php?t=43989&highlight=calculadora
onde seguindo a dica do Chico Gois as instruçoes para isto são :
procedure TForm1.Timer1Timer(Sender: TObject); var h: Thandle; s : string; i: Integer; begin //Procure pela calculadora H := FindWindow(´scicalc´, nil); //pegue o handle da caixa, ou seja, um filho que a calculadora h := getwindow(h,GW_CHILD); //Tamanho do Texto i:=SendMessage(h, WM_GETTEXTLENGTH, 0, 0) + 1; // inicializar uma variável string com o tamanho do texto setLength(s, i); //agora, pegue o texto SendMessage(h, WM_GETTEXT, i, Integer(s)); //tratar o seu valor s := trim(s); //Exibi-lo Edit1.Text := s; end;
porem encontrei tb uma dica do nildo muito interresante neste outro tópico:
http://forum.clubedelphi.net/viewtopic.php?t=4735&highlight=calculadora
onde seguindo a dica do nildo , a gente coloca uma janela , dentro de um form , usando a seguinte instrução :
windows.SetParent( FindWindow( nil, ´Calculadora´ ), Form1.handle )
[color=red:0b17c77ab5]Agora mais precisamente, é que entra a segunda parte desta dúvida...[/color:0b17c77ab5]
Ao Colocar a janela dentro do form como fica o código para capturar
o valor da calculadora em um edit :cry: :cry: :cry:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)