Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

Abrir programa dentro de outro?

Recommended Posts

Pessoal seguinte,vou explicar o que esta aconteçendo:

 

 

1-Pois bem na minha faculdade há um programa de fazer provas,assim que ele é aberto ele ocupa a tela inteira do windows e nenhum comando de atalho para minimizar ou para sair funciona! nen minimizado o programa roda!

 

Dai eu pensei o seguinte:

 

Construo um programa no delphi e abro este programa da faculdade dentro do form do delphi fazendo ocupar a tela todo do formulario do programa,mas esse programa deve ser parecedo como o team view e emuladores de sistemas operacionais virtuais(so que no caso so tera um botao aonde eu seleciono o programa .exe e executo dentro do form,como uma especie de IFRAME do html

 

Possivel? ou ja existem programas assim?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Vamos ver se entendi o que você precisa. Você quer chamar um programa.exe a partir de outro programa? Caso não seja isso, peço que por gentileza tente explicar novamente.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo! abrir um programa .exe apartir de outro programa so que quando abiri ele ira abrir dentro do form do programa feito em delphi

 

sendo que o programa uma vez aberto pelo delphi ele nunca podera sair de dentro do form! entendeu?

 

Exemplo:

 

1-Vamos imaginar um projeto feito em delphi e dentro dele tem um botao!

2-clicando nesse botao ele abre o programa selecionado,vamos supor que abriu a calculadora do windows

3-tem um porem a calculadora nunca pode sair de dentro do programa,pois no windows vc pode arrascar a janela da calculadora pelo desktop

4-Já quando abre a apartir do form! ela pode se locomover pelo form mas nunca podera sair dele!

 

entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Rode esse pequeno Demo pra ver se é isso que você quer.

 

Caso não seja, estou pensando em outra coisa, algo relacionado a trabalhar com frames no delphi, em todo caso rode o demo pra ver.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos.

 

Amigo Micilini Roll, de fato fui averiguar e o arquivo estava realmente corrompido, peço desculpas pela falha. Agora pode baixá-lo novamente que fiz um teste e aqui está normal agora.

 

Demo1

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Eisenheim é quaaaase isso ele abriu o project 2 so que ele nao abriu dentro do project1,ou seja:

 

1-Ele abriu dessa maneira abaixo: ou seja ele abriu em uma nova janela envez de executar dentro do project1.exe!

 

6jc.png]

 

2-Abaixo seria a maneira correta de abrir o programa! ou seja o project1.exe chama o project 2 pra dentro dele mesmo:

 

i8o.png

Agora se eu tentar arrastar a tela do project2.exe de um modo que ela fique fora do project1.exe será impossivel! Por isso que eu fiz um quadrado vermelho representando um circulo maior! e dentro dele o project2.exe representado pelo quadrado AZUL !

 

Entao seguinte! o quadrado azul nunca pode sair do quadrado vermelho!

 

entendeu agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Sim, agora compreendi. Sinceramente nunca presenciei nada nesse sentido. Já fiz e vi muita coisa nesse sentido, mas com forms do mesmo projeto, ou seja, um único exe.

 

Vou pesquisar a respeito e se encontrar algo compartilho com você. Se puder, faça o mesmo que também fiquei curioso.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim! Colar mas de uma forma inteligente rs acabou por isso pessoal?aparentemene parece ser um programa facil! Eu acho que vou recorrer a outras linguagens de programacao daqui do forum! Mas vamos la pessoal alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom meu caro, se é isso mesmo, faça assim:

 

1. Baixe uma "Máquina Virtual com Windows XP" que é basicamente um emulador. Nele você vai poder rodar uma cópia do Windows dentro de uma janela do seu Windows Normal.

 

2. Nessa máquina virtual (se você usa o W7, então baixe na Microsoft o "Windows XP Mode" que é uma MV que já vem configurada) você instala esse programa que você está querendo usar e execute-o.

 

Resultado. Ele vai rodar e rodear a janela da máquina virtual, que é só mais uma janela no seu Windows. Aí você vai ter a liberdade que precisa. Não precisa aprender a programar.

 

É o jeitinho brasileiro ganhando mais uma :-/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi! mas nisso eu terei que:

 

1-Instalar a maquina virtual no meu proprio hd pq o tempo em que vou instalar no pc da faculdade vai demorar

 

2-O programa esta localizado no hd do pc da faculdade entao terei que : acessar a maquina virtual instalado no hd externo e tentar acessar na maquina virtual o hd do pc!

 

olha rapaz vc deve entender de delphi certo? eu achei este link mas nao entende! sera que é isso mesmo? de uma olhada!

 

http://stackoverflow.com/questions/796883/how-to-shell-to-another-app-and-have-it-appear-in-a-delphi-form



MDI child forms? me ajude!!!



aaaaaaaaaaaaahhh!!!! graças graças eu achei um programa que faz isso! ele pode ser baixado no link abaixo:

 

http://delphi.about.com/library/weekly/code/src020805.zip

 

 

é so abrir o arquivo md1project! ele abre o projeto ! dentro dele da maneira que eu quero! pois bem! agora vou necessitar muito da ajudinha de voces! pois bem! como agora eu vou fazer para ele por exemplo abrir um programa localizado na area de trabalho chamado

 

 

eae.exe

 

????????????????



encontrei mais esse:

 

http://www.forum-invaders.com.br/vb/showthread.php/37437-Artigo-Aplicativos-MDI-em-delphi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos.

 

O que você quer é criar formulários do tipo MDI? Isso significa que você poderá abrir vários forms dentro do seu form principal, e foi isso que me referi logo no início dos posts quando dizia que já havia feito muita coisa com forms do mesmo projeto.

 

Hoje também existe uma outra forma, que é chamada de TDI. Basicamente seria abrir seus forms em "Guias", assim como fazemos com o chrome por exemplo, quando abrimos várias páginas, cada uma em sua guia.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você poderia mandar o link da página delphi.about.com onde você conseguiu esse arquivo? Gostaria de ler o artigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para o que você quer, aqui está a resposta:

 

 

unit Unit1;


interface


uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Winapi.ShellAPI;


type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;
  fNotePadHandle: HWnd;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  Rec: TShellExecuteInfo;
const
  AVerb = 'open';
  AParams = '';
  AFileName = 'Notepad.exe';
  ADir = '';
begin
  FillChar(Rec, SizeOf(Rec), #0);


  Rec.cbSize       := SizeOf(Rec);
  Rec.fMask        := SEE_MASK_NOCLOSEPROCESS;
  Rec.lpVerb       := PChar( AVerb );
  Rec.lpFile       := PChar( AfileName );
  Rec.lpParameters := PChar( AParams );
  Rec.lpDirectory  := PChar( Adir );
  Rec.nShow        := SW_HIDE;


  ShellExecuteEx(@Rec);
  WaitForInputIdle(Rec.hProcess, 5000);


  fNotepadHandle := Winapi.Windows.FindWindow( 'Notepad', nil );
  Winapi.Windows.SetParent( fNotepadHandle, Handle );


  Resize;
  ShowWindow(fNotepadHandle, SW_SHOW);
end;


procedure TForm1.FormResize(Sender: TObject);
begin
  if IsWindow(fNotepadHandle) then begin
    SetWindowPos(fNotepadHandle, 0, 0, 0, ClientWidth, ClientHeight,
      SWP_ASYNCWINDOWPOS);
  end;
end;


end.

 

  1. Crie um projeto;
  2. Coloque um botão no formulário
  3. Especifique o evento OnClick do Botão para a procedure 'Button1Click'
  4. Especifique o evento Resize OnResize do Formulário para a procedure 'FormResize'
  5. Troque 'Notepad.exe' pelo nome do arquivo executável que vocês vai 'abrir'
  6. Troque 'Notepad' pelo nome que aparerá na janela quando ele é executado. Para saber qual é, use o Alt+Tab ou o Gerenciador de Tarefas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

rapaz posso te falar um coisa: faz 7 anos que nao mecho em delphi 7 os unicos programas que fiz foi:

 

1-editor de texto

2-programinha de slidshow

3-keyllogger

4-navegador web

 

estou meio perdido com esse codigo! sera que voce pode disponibilizar os arquivos para download? se for possivel? :coolio:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas você gosta mesmo de tudo na mão, né?

Não me surpreende a necessidade de fazer esse esquema.

Pelo menos não esquece de me pontuar, ok?

 

https://dl.dropboxusercontent.com/u/840209/SemiVirtualizacao.zip

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrss +3 pontos pra voce!

 

 

ei o link deu 404! nao existe? pode consertar??

 

 

 

 

poxa amigao ta ai?

 

esta por ai ainda? estou necessitando! se colocar irei agradeçer basante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou verificar pra você

 

https://dl.dropboxusercontent.com/u/840209/SemiVirtualizacao.zip

 

O link é esse aqui. Acabei de testar e está funcionando normalmente. Dá uma pausa uns 5 segundos no meu chrome e depois aparece a janela de salvar e depois que dou enter ele baixa todinho normalmente.

 

Este programa compila em Delphi XE3. Para compilar em versões anteriores tem que tirar os nomes que vem antes dos "."s nos arquivos da cláusula "uses"

 

Exemplo:

 

uses

winapi.windows, system.sysutils;

 

troca para

 

windows, sysutils

 

Até um leigo mais leigo pode fazer isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.