PortalPortal  InícioInício  FAQFAQ  BuscarBuscar  Registrar-seRegistrar-se  Conectar-se  

Compartilhe|

Juntando 2 ou + (.EXE) em apenas 1

Ver o tópico anterior Ver o tópico seguinte Ir em baixo
AutorMensagem
Douglanilo
avatar
Mestre
Mestre

Masculino Postagens : 959
Data de inscrição : 02/04/2009


Ver perfil do usuário http://www.twevergrand.com
MensagemAssunto: Juntando 2 ou + (.EXE) em apenas 1 Qui Out 22, 2009 8:43 pm

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

Embutidor

1. 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.rc

Laranja: É 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 arquivos


6.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 arquivo

7. 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.


Extra

Como 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
Voltar ao Topo Ir em baixo

Juntando 2 ou + (.EXE) em apenas 1

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo
Página 1 de 1

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
The World of EverGrand :: Programação em Linguagens :: Delphi/Pascal :: Tutoriais-