GARANTIR DESCONTO

Fórum Handle !!!! #143926

10/03/2003

0

caros colegas, sempre vejo algumas pessoas perguntando como pegar o handle ( de um form ) a minha duvida é a seguinte ????

O que vem a ser o Handle !!!!!

[]´s


Anonymous

Anonymous

Responder

Posts

10/03/2003

Anonymous

Handle é um numero que indica para o windows a instancia da janela,
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


Responder

Gostei + 0

10/03/2003

Nildo

handle é a identificação da janela ou objeto. Cada objeto tem um handle.

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.


Responder

Gostei + 0

12/10/2004

Tatuweb

Colocar uma janela (Calculadora por exemplo) dentro de um TPanel de seu Form. (Caso queria o codigo me pessa. eu coloco aqui).

Nildo vc ainda tem esse código? Ou alguém que esteja vendo sabe como fazer?


Responder

Gostei + 0

13/10/2004

Nildo

Tenho sim:

windows.SetParent( FindWindow( nil, ´Calculadora´ ), panel1.handle )



Responder

Gostei + 0

13/10/2004

Paulo_amorim

Olá

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é+


Responder

Gostei + 0

13/10/2004

Nildo

Nesse caso você não diferencia. mas cada uma vai ter um handle diferente. Só dá para diferenciar pelo ID do processo.


Responder

Gostei + 0

13/10/2004

Fórum Vini

Nesse caso você não diferencia. mas cada uma vai ter um handle diferente. Só dá para diferenciar pelo ID do processo.

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...


Responder

Gostei + 0

09/04/2005

Marco Salles

pesquisando aqui no forum , encontrei uma sugestão bem interresante, no que diz a este assunto.

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:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar