Recuperar o valor da calculadora do windows
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
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
Curtidas 0
Respostas
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!
bye!
GOSTEI 0
Chico Gois
13/05/2004
Em um artigo publicado
Download do exemplo
http://www.delphibr.com.br/controle.php?tipo=1&id=93
T+
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
13/05/2004
hum...
GOSTEI 0
Euclides
13/05/2004
Valeu galera irei tentar pegar do windows mesmo caso nao de eu instalo a RxLib
Muito Obrigado
Abraços
Muito Obrigado
Abraços
GOSTEI 0
Chico Gois
13/05/2004
Funciona perfeito.....
T+
T+
GOSTEI 0
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 :
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 :
[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:
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