Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrey fernandes

Chamar DLL (dinâmica) pela rede

Recommended Posts

Fiz uma aplicação e uma DLL em delphi 7, a DLL tem a função de pegar o IP do PC e a aplicação chama a função da DLL p/ obter o IP da PC. A DLL ficará num PC da rede e a aplicação em outro PC, e aplicação localiza a DLL na rede e chama a função da DLL.

A aplicação até faz esse processo corretamente, exceto que, a aplicação localiza a DLL, faz a chamada da função que retorna o IP, mas a função da DLL, pega o IP do PC que está a aplicação, em vez de pegar o IP do PC que está a DLL. Alguém saberia como fazer para que a DLL retorne o IP do PC que está a DLL ??

 

Segue abaixo os códigos da DLL e aplicação:

 

DLL:

 

library BuscaIP;

 

function PegaIP: PAnsichar; Export; Stdcall;

var

ip : PAnsichar;

begin

try

Result := localizaip;

 

Except

Result := 'Erro de leitura!';

end;

end;

 

{$R *.res}

 

exports

PegaIP;

 

begin

end.

 

Aplicação:

 

implementation

 

{$R *.dfm}

 

Function TForm1.GetIPRede: PAnsichar;

var

DLLFunction: TDLLFunction;

DLLHandle: Cardinal;

Begin

 

Result := '';

 

DLLHandle := LoadLibrary( Pchar(\\CaminhoRede\C:\pasta\ + 'BuscaIP.dll') );

 

If ( DLLHandle = 0 ) Then Exit;

 

Try

@DLLFunction := GetProcAddress(DLLHandle, 'PegaIP');

 

If Assigned(DLLFunction) Then

Result := DLLFunction;

 

Finally

FreeLibrary(DLLHandle);

End;

 

End;

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso quando você carrega a dll pela aplicação ela vai ser carregada na maquina onde a aplicação está rodando.

 

Eu não entendi o seguinte, você tem o ip de onde está a dll e quer que a dll retorne esse ip? Nesse caso a dll não teria utilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

GT, acho que não consegui explicar bem meu problema. É o seguinte, tenho uma DLL em um PC e a aplicação que chama a DLL em outro PC, preciso que a DLL retorne o IP do PC que ela está localizada, quando for chamada a função dela(DLL), pela a aplicação que está em outro PC.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi o que você pretende, apenas disse que para chegar na dll você já vai ter o ip da maquina, certo?

 

Quando você da um loadlibrary no caminho de rede a dll vai ser carregada localmente e não remotamente. Não sei se é possível, mas a dll deve estar carrega na maquina remota e você chamar os métodos dela com o handle da maquina remota (repito, não sei se é possível).

 

Nessa parte

@DLLFunction := GetProcAddress(DLLHandle, 'PegaIP');

você teria que pegar o processo da maquina remota.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.