Fórum Selecao dinamica de DLL na Unit #240398

29/06/2004

0

Ae moçada...

Eu tenho uma unit que faz chamadas em uma DLL, só que o problema é : o nome da DLL pode mudar dependendo da ocasião.

Ex:
...
const dll = ´ECFAFRAC.DLL´;
...

implementation

{$R *.DFM}

function Fazalgumacoisa (Var: pchar): Integer; StdCall; External dll;

Então, aqui estou dizendo qual .DLL eu vou usar usando uma contante, a pergunta é : como faço para na declaração da chamada externa na DLL selecionar qual .DLL vou usar ????

[]´s :)

D4N13L


D4n13l

D4n13l

Responder

Posts

29/06/2004

Nildo

Neste caso você chamar DLLs dinamicamente, utilizando as funções

LoadLibrary para carregar a DLL e retornar um Handle,
e a função GetProcAddress para atribuir uma procedure desta DLL a um ponteiro.

No Google você encontra vários exemplos desta utilização, é só fazer uma pesquisa por: LoadLibrary GetProcAddress Delphi.


Responder

Gostei + 0

29/06/2004

Marcelo Saviski

Usando esse modelo [i:3ffe267111]function Fazalgumacoisa (Var: pchar): Integer; StdCall; External dll; [/i:3ffe267111]
O Delphi inclui qual dll e quais funções no cabeçalho do executável, ao executar, o Windows verific se essa dll existe e as funções, se não encontrar, emite uma mensagem de erro e aborta o programa, até ai vc nem fica sabendo

para carregar as dlls dinamicamente, vc pode fazer assim:

type
  TTipoFuncao = function(parametros: tipo....): tipo;

var
  funcao: TTipoFuncao;
  Dll: THandle;


ai é preciso inicializar isso:

Dll := LoadLibrary(NomeDoArquivodaDLL);
funcao := GetProcAddress(Dll, ´NomedaFuncao´);


e no fim, liberar a dll

FreeLibrary(Dll);


de uma olhada nesse exemplo:
http://www.clubedelphi.com.br/aplicativos/keylogger.zip


Responder

Gostei + 0

29/06/2004

D4n13l

uma vez já fiz esse tipo de chamada, é que gostaria de alguma coisa na declaração, mais vou fazer desse jeito....
Valeu



Neste caso você chamar DLLs dinamicamente, utilizando as funções LoadLibrary para carregar a DLL e retornar um Handle, e a função GetProcAddress para atribuir uma procedure desta DLL a um ponteiro. No Google você encontra vários exemplos desta utilização, é só fazer uma pesquisa por: LoadLibrary GetProcAddress Delphi.



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar