Jump to content


Photo

Embutir Dll No Seu Exe


  • Faça o login para participar
1 reply to this topic

#1 proteus_adi

proteus_adi

    @handle:=proteus;//>>>

  • Usuários
  • 309 posts
  • Sexo:Não informado
  • Localidade:Minas Gerais>> Belo Horizonte
  • Interesses:Programação e Web>>>

Posted 02/08/2004, 13:06

Navegando na net.. no site delphibr.com.br vi um artigo que ensinava a embutir uma dll no seu exe... finalidade? evitar sua distrubuição separada...
bom... eu achei muito interessante.. espero que gostem...

eh recomendavel saber trabalhar com dlls.

Basicamente a técnica consiste em transformar o arquivo DLL (pode ser qualquer arquivo: imagem, som, etc) em um arquivo de recursos e adicioná-lo ao pacote do executável (extensão .res). Quando houver a necessidade do seu uso, ele pode ser extraído e salvo temporariamente (ou definitivamente).

>>primeiro abra o bloco de notas e crie um arquivo.res
Esse arquivo deverá possuir uma linha para cada arquivo a ser transformado em recurso. Nesse exemplo conterá apenas uma linha.

insira a linha
MINHADLL DLLFILE C:\DEV\MINHADLL.DLL

"O primeiro parâmetro é o label a ser atribuido ao arquivo (Será utilizado pelo delphi pra achar o recurso).

O segundo é apenas um identificador do tipo de arquivo.

O terceiro é o path onde o compilador de recursos irá buscar o arquivo para
transformar em .RES"

>>Execute o compilador de recursos que acompanha o delphi: Está na pasta BIN e se chama BRCC32.EXE. Este é um programa do DOS, portanto se você não estiver na pasta BIN do delphi, tenha a certeza que sua váriavel PATH esteja apontando para lá.
Para transformar o arquivo .RC em .RES digite:

BRCC32 MIDAS.RC

PRONTO..
agora eh criar o programa que ira usar a dll...
>>inclua o arquivo.res assim
{$R arquivo.RES}

pronto... a dll jah faz parte do projeto..

agora eh soh extrai-la.. para usa-la...
crie a procedure
Procedure SaveMidas;
Var PathToSave : String;
    Res : TResourceStream;
Begin
  PathToSave := ExtractFilePath(Application.ExeName)+'\MINHADLL.DLL';
  If not FileExists(PathToSave) Then Begin
     Res := TResourceStream.Create(Hinstance, 'MINHADLL', 'DLLFILE');
     Try
       Res.SavetoFile(PathToSave);
     Finally
       Res.Free;
     End;
  End;
End;
e executar...

prontinho..
Bom.. A ideia eh essa... agora eh soh chamar a dll normalmente...
PROTEUS [ADSUMUS]
ETERNAL ########
---------------------------------------------------------------
"Já dizia o mestre: PROGRAMAR é diferente de CODIFICAR"...

#2 christianhess

christianhess

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 07/08/2005, 01:08

Não entendi, pode me explicar melhor? Posso pegar qualquer DLL?




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq