segunda-feira, 1 de junho de 2009

Rodar programa dentro de outro

Por exemplo, você quer mostrar a calculadora do Windows dentro do seu sistema, em um form específico, ou, quer rodar um executável terceirizado só que dentro da interface do seu sistema, é possível?

Sim, ao utilizarmos o Handle de formulários do Delphi conseguimos incorporar outras aplicações dentro da estrutura do nosso sistema, permitindo que as ações sejam executadas no próprio sistema. Veremos como exibir a calculadora do windows ("calc.exe") dentro de um form. Adicione dois botões ao formulário, altere o Caption dos mesmos para "Abrir" e "Incorporar" respectivamente. Ao evento OnClick do botão abrir, adicione o seguinte código que irá executar a calculadora:
WinExec('calc.exe',SW_NORMAL);

Ao botão incorporar adicione a seguinte linha de código que irá localizar o executável da calculadora e em seguida incorporar a sua estrutura dentro da estrutura do formulário que estamos trabalhando (handle):
windows.SetParent( FindWindow( nil, 'Calculadora' ), Form1.handle ) ;

Ao rodar a aplicação, clique primeiramente em "abrir" para que a calculadora seja executada, veja que a mesma está aparecendo na barra de tarefas do windows. Após clique em "incorporar" observando que ela passa a ser exibida como sendo um objeto do formulário que deixa de ser exibida na barra de tarefas do S.O. Faça a utilização desta dica empregada a outros tipos de executáveis. Abraço e até o próximo post.

4 comentários:

Unknown disse...

Como eu poderia fazer isto em C# ?

Unknown disse...

tem como remover aquela barra de fechar, minimizar .... do programa q esta aberto dentro deste programa q vc mostrou como faz agora ( ou seja remover temporariamente a barra da calculadora )

Unknown disse...

por que esta dando este erro?
xxx-----
[DCC Error] Unit1.pas(30): E2003 Undeclared identifier: 'windows'
[DCC Error] Unit1.pas(30): E2010 Incompatible types: 'TWinControl' and 'HWND'
xxx---

Unknown disse...

Como eu poderia fazer isso em uma página html?