Execultar programa externo

Delphi

05/09/2005

Olá

para execultar programas externo utilizo a ShellApi: ex.
ShellExecute(0,´Open´,Pchar(´programa.exe´),nil,nil, SW_Show);

como faço para excultar este programa dentro da janela do meu programa.

A utilizo o Windows XP.

Desde já agradeço


Sdph

Sdph

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

05/09/2005

Não sei se é exatamente o que procura, mas segue um exemplo com a calculadora...
var
  Handle: THandle;
begin
  Handle := FindWindow(nil, ´Calculadora´);
  if Handle > 0 then
    Windows.SetParent(Handle, Panel1.Handle);
end;



GOSTEI 0
Paullsoftware

Paullsoftware

05/09/2005

[quote:1eef17a710=´Bruno Belchior´]Não sei se é exatamente o que procura, mas segue um exemplo com a calculadora...
var
  Handle: THandle;
begin
  Handle := FindWindow(nil, ´Calculadora´);
  if Handle > 0 then
    Windows.SetParent(Handle, Panel1.Handle);
end;
[/quote:1eef17a710]

cara legal, mais como faço pra que o programa já abra dentro do meu Panel por exemplo?


GOSTEI 0
Adriano Santos

Adriano Santos

05/09/2005

[quote:1e36d7023d=´Bruno Belchior´]Não sei se é exatamente o que procura, mas segue um exemplo com a calculadora...
var
  Handle: THandle;
begin
  Handle := FindWindow(nil, ´Calculadora´);
  if Handle > 0 then
    Windows.SetParent(Handle, Panel1.Handle);
end;


cara legal, mais como faço pra que o programa já abra dentro do meu Panel por exemplo?[/quote:1e36d7023d]

Fiz um teste aqui e precisa dar um ´tempinho´ para que a função FindWindow encontre o programa especificado, olha:

var
  Handle: THandle;
begin
  Handle := FindWindow(nil, ´Calculadora´);
  Sleep(1000); //adicionei esta linha, só pra dar um pause
  if Handle > 0 then
    Windows.SetParent(Handle, Panel1.Handle);
end;


Daí funcionou beleza.


GOSTEI 0
Martins

Martins

05/09/2005

:(
Desculpem!!!!!

Devo ter entendido errado ou feito algo errado, pq pelo q entendi o colega quer saber como ele abri a calculadora já dentro do panel, pq a função passada pelo [b:e050743c9a]Bruno[/b:e050743c9a], apenas a copia para o panel se ela estiver aberta, pq assim é possível para o sistema ver o nome da janela.

Se não isso, desculpem!!!


Boa Sorte!!!!


GOSTEI 0
Adriano Santos

Adriano Santos

05/09/2005

:( Desculpem!!!!! Devo ter entendido errado ou feito algo errado, pq pelo q entendi o colega quer saber como ele abri a calculadora já dentro do panel, pq a função passada pelo [b:9ed8c3d007]Bruno[/b:9ed8c3d007], apenas a copia para o panel se ela estiver aberta, pq assim é possível para o sistema ver o nome da janela. Se não isso, desculpem!!! Boa Sorte!!!!


[b:9ed8c3d007]Martins[/b:9ed8c3d007] o codigo do [b:9ed8c3d007]Bruno[/b:9ed8c3d007] faz isso mesmo que vc mencionou, mas como demora alguns milisegundos para o FindWindow encontrar a janela se não colocar um Sleep a janela do aplicativo aberto não será ´movida´. O ideal, claro, seria já abrir o programa dentro do Panel do software em questão.


GOSTEI 0
POSTAR