Fórum Como compilar 2 projetos Delphi num soh .exe um projeto cha #288168
15/07/2005
0
Estou com um problemas pois preciso q no momento em que inicio um form Inicial (naum splash) eu tenha a opção de executar outro projeto compilado no mesmo .exe.
Obrigado
Obrigado
O4pr3ndiz
Curtir tópico
+ 0
Responder
Posts
15/07/2005
Adriano Santos
Procure um artigo que escrevi na seção Artigos aqui do ClubeDelphi. O nome do artigo é : [b:53b4f8f76c][color=red:53b4f8f76c]Arquivos de Recursos[/color:53b4f8f76c][/b:53b4f8f76c]
Aqui eu coloquei no onCreate, mas você pode colocar em qualquer lugar.
O segredo está no WinExec depois que o arquivo executável é ´descompactado´ (extraído) de dentro do seu executável principal.
[i:53b4f8f76c][/i:53b4f8f76c]
Aqui eu coloquei no onCreate, mas você pode colocar em qualquer lugar.
O segredo está no WinExec depois que o arquivo executável é ´descompactado´ (extraído) de dentro do seu executável principal.
procedure TForm1.FormCreate(Sender: TObject);
procedure CopiarEExecutar;
var
DirDestino : String;
NomeArquivo: String;
Fres : TResourceStream;
fFile : TFileStream;
begin
DirDestino := ´C:\Temp\´;
NomeArquivo := ´MeuExecutavel.exe´;
{Cria uma instância de TResourceStream para manipulá-lo mais tarde}
Fres := TResourceStream.Create(0,´MEURECURSO_NO_PROJETO´,RT_RCDATA);
{Cria em memória o arquivo gravado no Resource}
fFile := TFileStream.Create(DirDestino + NomeArquivo,fmCreate);
try
{Copia do Resource}
Ffile.CopyFrom(Fres,Fres.Size);
MessageDlg(´O Arquivo: ´ + NomeArquivo + ´ foi copiado com êxito e será executado.´,mtError,[mbOK],0);
WinExec(PChar(DirDestino + NomeArquivo), SW_SHOWNORMAL);
finally
{Libera as variáveis necessárias.}
Fres.Free;
Ffile.Free;
end;
end;
begin
CopiarEExecutar;
end;
Responder
Gostei + 0
15/07/2005
Adriano Santos
Cometi um erro.
O WinExec tem que vir depois que a variável TResourceStream for liberada, caso contrário o programa não será aberto. Veja o fonte correto:
O WinExec tem que vir depois que a variável TResourceStream for liberada, caso contrário o programa não será aberto. Veja o fonte correto:
procedure TForm1.FormCreate(Sender: TObject);
procedure CopiarEExecutar;
var
DirDestino : String;
NomeArquivo: String;
Fres : TResourceStream;
fFile : TFileStream;
begin
DirDestino := ´C:\Temp\´;
ForceDirectories(DirDestino);
NomeArquivo := ´Calc.exe´;
{Cria uma instância de TResourceStream para manipulá-lo mais tarde}
Fres := TResourceStream.Create(0,´MEU_RECURSO´,RT_RCDATA);
{Cria em memória o arquivo gravado no Resource}
fFile := TFileStream.Create(DirDestino + NomeArquivo,fmCreate);
try
{Copia do Resource}
Ffile.CopyFrom(Fres,Fres.Size);
MessageDlg(´O Arquivo: ´ + NomeArquivo + ´ foi copiado com êxito e será executado.´,mtError,[mbOK],0);
finally
{Libera as variáveis necessárias.}
Fres.Free;
Ffile.Free;
end;
WinExec(PChar(DirDestino + NomeArquivo), SW_SHOWNORMAL);
end;
begin
CopiarEExecutar;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)