Recuperar o valor da calculadora do windows

Delphi

13/05/2004

Olá pessoal,

Alguém saberia me dizer se é possível e talvez como eu poderia recuperar um valor em que o usuário calculou na calculadora do windows para um edit no meu sistema ???

Agradeço desde já

Abraços


Euclides

Euclides

Curtidas 0

Respostas

Delphi32

Delphi32

13/05/2004

kra, acho q isso não é possível não, mas se você precisa que o usuário calcule algo e retorne para o Edit, instale a RxLib. Nela tem um componente chamado RxCalcEdit que é tipo uma ComboBox, mas quando você clica no botão ele abre uma pequena calculadora em baixo. É bem fácil de usar...

bye!


GOSTEI 0
Chico Gois

Chico Gois

13/05/2004

Em um artigo publicado

Pegando o conteúdo da calculadora padrão do windows Para pegar o valor da caixa de texto da calculadora, você precisa: Pegar o handle da calculadora Pegar o tamanho do texto da caixa Pegar o texto da caixa E exibi-lo Para fazer isto, é bem simples, coloque um Text e um Button no seu form. Agora procure pela calculadora utilizando a API FindWindow, ela retorna o handle da janela que está sendo procurada caso for encontrada. Handle é um numero de identificação que todos os objetos do Windows tem. Então vamos lá: Crie uma variável qualquer do tipo Thandle Var h: Thandle; Procure pela calculadora H := FindWindow(´ScilCalc´, nil); Pronto, você já possui o handle da calculadora, o que possibilita o controle dela. Agora, pegue o handle da caixa, ou seja, um filho que a calculadora tem, ele vai te retornar o handle da caixa de texto. A variável h pois o handle da calculadora não será mais utilizado, utilize outra se você ainda vai controlar a calculadora h := getwindow(h, GW_CHILD); pronto, temos a caixa de texto Agora, mande uma mensagem para a caixa dizendo que você quer o tamanho do texto dela. Crie uma variável onde você irá guardar este tamanho. Var i: Integer; SendMessage(h, WM_GETTEXTLENGTH, 0, 0) + 1; Você precisa inicializar uma variável string com o tamanho do texto, pois a próxima api a ser utilizada, retorna o texto para a variável, e se ela tiver tamanho menor, ela não aumenta a variável automaticamente. Portanto, sete o tamanho dessa variável texto. setLength(s, i); Agora s tem o lenght de i, que foi o tamanho que você pegou do texto da caixa da calculadora agora, pegue o texto SendMessage(h, WM_GETTEXT, i, Integer(s)); Pronto, agora é só você tratar o seu valor. No final seu código deverá ficar assim : procedure TForm1.Button1Click(Sender: TObject); Var h: Thandle; s : string; i: Integer; begin h := FindWindow(´SciCalc´, Nil); h := getwindow(h, GW_CHILD); i := SendMessage(h, WM_GETTEXTLENGTH, 0, 0) + 1; setLength(s, i); SendMessage(h, WM_GETTEXT, i, Integer(s)); s := trim(s); Edit1.Text := s; end;


Download do exemplo

http://www.delphibr.com.br/controle.php?tipo=1&id=93


T+


GOSTEI 0
Delphi32

Delphi32

13/05/2004

hum...


GOSTEI 0
Euclides

Euclides

13/05/2004

Valeu galera irei tentar pegar do windows mesmo caso nao de eu instalo a RxLib


Muito Obrigado

Abraços


GOSTEI 0
Chico Gois

Chico Gois

13/05/2004

Funciona perfeito.....

T+


GOSTEI 0
Marco Salles

Marco Salles

13/05/2004

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:1f9b9a73c6]Agora mais precisamente, é que entra a segunda parte desta dúvida...[/color:1f9b9a73c6]

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
POSTAR