Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => -1
            [id] => 316698
            [titulo] => Chamar calculadora do Windows, Como Faço?
            [dataCadastro] => DateTime Object
                (
                    [date] => 2006-03-20 00:00:00
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 236458
            [status] => A
            [isExample] => 
            [NomeUsuario] => Adriano Santos
            [Login] => forum.Adriano Santos
            [Apelido] => 
            [Foto] => 
            [Conteudo] => [code:1:e2501018bb]
procedure TForm1.Button1Click(Sender: TObject);
var
H : HWND;
begin
H := FindWindow(nIl, ´Calculadora´);
if H > 0 then //Calculadora jah aberta
SetForegroundWindow(H)
else
begin
WinExec(´C:\WINNT\SYSTEM32\CALC.EXE´, SW_SHOWNORMAL);
SetForegroundWindow(h);
end;

end;
[/code:1:e2501018bb]


) )

Chamar calculadora do Windows, Como Faço?

Developerb
   - 20 mar 2006

Olá!!

Gostaria de saber como faco para chamar a calculadora do Windows
a partir da versao 98 atraves do meu aplicativo.

Grato.


Paullsoftware
   - 20 mar 2006

#Código

WinExc(´C:\Windows\Calc.exe´,SW_NORMAL);

acho que isso resolve! :wink:


Paulocesar1301
   - 20 mar 2006

Declare ShellAPI no seu Uses e:

#Código


ShellExecute(0, nil, PChar(´CALC.EXE´), nil, nil, SW_ShowNORMAL);



Developerb
   - 20 mar 2006

Gostaria de saber como faco para chamar a calculadora somente um VEZ e
definir o local onde ela devera aparecer.
Tipo a minha ideia seria na frente do Aplicativo estila( ShowModal ) e centralizado na tela.


Martins
   - 20 mar 2006


Citação:
Gostaria de saber como faco para chamar a calculadora somente um VEZ e
definir o local onde ela devera aparecer.
Tipo a minha ideia seria na frente do Aplicativo estila( ShowModal ) e centralizado na tela.


Trabalhe com o Handle da Janela da Calculadora.


Adriano Santos
   - 20 mar 2006

#Código


procedure TForm1.Button1Click(Sender: TObject);
var
H : HWND;
begin
H := FindWindow(nIl, ´Calculadora´);
if H > 0 then //Calculadora jah aberta
SetForegroundWindow(H)
else
begin
WinExec(´C:\WINNT\SYSTEM32\CALC.EXE´, SW_SHOWNORMAL);
SetForegroundWindow(h);
end;

end;



Adriano Santos
   - 20 mar 2006

Você ainda pode fazer algo mais legal, posicionar a calculadora perto do mouse, veja um exemplo simples:

#Código


procedure TForm1.Button1Click(Sender: TObject);
var
H : HWND;
Pt: TPoint;
rRect : TRect;
begin
GetCursorPos(Pt);
H := FindWindow(nil, ´Calculadora´);
if H > 0 then //Calculadora jah aberta
begin
//pega o retângulo da janela
GetWindowRect(h, rRect);
//move a janela para a posição do mouse
MoveWindow(H, Pt.X, Pt.Y, rRect.Right - rRect.Left, rRect.Bottom - rRect.Top, True);
//puxa pra frente a calculadora
SetForegroundWindow(h);
end
else
begin
//Abre
WinExec(´C:\WINNT\SYSTEM32\CALC.EXE´, SW_SHOWNORMAL);
//Atualiza a variaval H com o handle da janela (agora aberta)
H := FindWindow(nil, ´Calculadora´);
//pega o retângulo da janela
GetWindowRect(h, rRect);
//move a janela para a posição do mouse
MoveWindow(H, Pt.X, Pt.Y, rRect.Right - rRect.Left, rRect.Bottom - rRect.Top, True);
//puxa pra frente a calculadora
SetForegroundWindow(h);
end;
end;




Developerb
   - 20 mar 2006

Esta dando erro de Execucao na seguinte linha....

#Código


var
H: HWND;
>>Erro: CONSTANT or Type Indetifier Expected



Martins
   - 20 mar 2006


Citação:
Esta dando erro de Execucao na seguinte linha....

#Código


var
H: HWND;
>>Erro: CONSTANT or Type Indetifier Expected


Mas deveria dar erro algum, verifique se vc tem a unit Windows declarada no uses

#Código

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
....

procedure TForm1.Button1Click(Sender: TObject);
var
H : HWND;
Pt: TPoint;
rRect : TRect;
begin
GetCursorPos(Pt);
H := FindWindow(nil, ´Calculadora´);
if H > 0 then //Calculadora jah aberta
begin
//pega o retângulo da janela
GetWindowRect(h, rRect);
//move a janela para a posição do mouse
MoveWindow(H, Pt.X, Pt.Y, rRect.Right - rRect.Left, rRect.Bottom - rRect.Top, True);
//puxa pra frente a calculadora
SetForegroundWindow(h);
end
else
begin
//Abre a Calculadora sem precisar do caminho, ela já está no path do windows.
WinExec(´CALC.EXE´, SW_SHOWNORMAL);
//Atualiza a variaval H com o handle da janela (agora aberta)
H := FindWindow(nil, ´Calculadora´);
//pega o retângulo da janela
GetWindowRect(h, rRect);
//move a janela para a posição do mouse
MoveWindow(H, Pt.X, Pt.Y, rRect.Right - rRect.Left, rRect.Bottom - rRect.Top, True);
//puxa pra frente a calculadora
SetForegroundWindow(h);
end;
end;


Boa sorte!!!


Adriano Santos
   - 20 mar 2006


Citação:

Citação:
Esta dando erro de Execucao na seguinte linha....

#Código


var
H: HWND;
>>Erro: CONSTANT or Type Indetifier Expected


Mas deveria dar erro algum, verifique se vc tem a unit Windows declarada no uses

#Código

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
....

procedure TForm1.Button1Click(Sender: TObject);
var
H : HWND;
Pt: TPoint;
rRect : TRect;
begin
GetCursorPos(Pt);
H := FindWindow(nil, ´Calculadora´);
if H > 0 then //Calculadora jah aberta
begin
//pega o retângulo da janela
GetWindowRect(h, rRect);
//move a janela para a posição do mouse
MoveWindow(H, Pt.X, Pt.Y, rRect.Right - rRect.Left, rRect.Bottom - rRect.Top, True);
//puxa pra frente a calculadora
SetForegroundWindow(h);
end
else
begin
//Abre a Calculadora sem precisar do caminho, ela já está no path do windows.
WinExec(´CALC.EXE´, SW_SHOWNORMAL);
//Atualiza a variaval H com o handle da janela (agora aberta)
H := FindWindow(nil, ´Calculadora´);
//pega o retângulo da janela
GetWindowRect(h, rRect);
//move a janela para a posição do mouse
MoveWindow(H, Pt.X, Pt.Y, rRect.Right - rRect.Left, rRect.Bottom - rRect.Top, True);
//puxa pra frente a calculadora
SetForegroundWindow(h);
end;
end;


Boa sorte!!!

É isso mesmo Martins, precisa da unit Windows, só isso.


Developerb
   - 20 mar 2006

Acertei o problema referente ao tipo da variavel declarada....
Coloquei o seguinte >>
#Código


var
H : THandle


Funcionou corretamente, fica agradecido pela ajuda de todos...


Adriano Santos
   - 20 mar 2006


Citação:
Acertei o problema referente ao tipo da variavel declarada....
Coloquei o seguinte >>
#Código


var
H : THandle


Funcionou corretamente, fica agradecido pela ajuda de todos...

Tranquilo, ambos os tipos estão declarados em Windows, com uma particularidade:


Citação:

THandle = System.THandle;
{Note que o THandle está vindo da unit System}

Citação:

THandle = LongWord;



Já HWND é declarada desta forma também na Unit Windows:


Citação:

HWND = type LongWord;


É isso ai :D


Martins
   - 20 mar 2006


Citação:

Citação:
Acertei o problema referente ao tipo da variavel declarada....
Coloquei o seguinte >>
#Código


var
H : THandle


Funcionou corretamente, fica agradecido pela ajuda de todos...

Tranquilo, ambos os tipos estão declarados em Windows, com uma particularidade:


Citação:

THandle = System.THandle;
{Note que o THandle está vindo da unit System}

Citação:

THandle = LongWord;



Já HWND é declarada desta forma também na Unit Windows:


Citação:

HWND = type LongWord;


É isso ai :D

É isso aí Adriano, informação é sempre bem vinda, ainda mais para a galera q está iniciando.

Valew.


Carlos_tedex
   - 04 mai 2006

Caro Adriano Santos,

Essa dica sobre ´posicionar a calculadora perto do mouse´ me ajudou p/ posicionar a calculadora em um ponto XY da tela que eu precisava... valew...


Adriano Santos
   - 04 mai 2006


Citação:
Caro Adriano Santos,

Essa dica sobre ´posicionar a calculadora perto do mouse´ me ajudou p/ posicionar a calculadora em um ponto XY da tela que eu precisava... valew...


Que isso, é um prazer ajudar os camaradas...

As ordens sempre.