Selecao dinamica de DLL na Unit
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
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
Curtidas 0
Respostas
Nildo
29/06/2004
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.
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.
GOSTEI 0
Marcelo Saviski
29/06/2004
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:
ai é preciso inicializar isso:
e no fim, liberar a dll
de uma olhada nesse exemplo:
http://www.clubedelphi.com.br/aplicativos/keylogger.zip
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
GOSTEI 0
D4n13l
29/06/2004
uma vez já fiz esse tipo de chamada, é que gostaria de alguma coisa na declaração, mais vou fazer desse jeito....
Valeu
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.
GOSTEI 0