Chamar DLL (dinâmica) pela rede
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.
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.
Andrey
Curtidas 0