| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
andreyrf Novato

Registrado: Quinta-Feira, 24 de Abril de 2008 Mensagens: 6
|
Enviada: Seg Ago 27, 2012 4:57 pm Assunto: Chamar DLL 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. |
|
| Voltar ao Topo |
|
 |
marcieldeg Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Ter Ago 28, 2012 8:43 am Assunto: |
|
|
Apesar da DLL estar na rede, ela é carregada na máquina da aplicação, deve ser por isso que está retornando o IP local.
Poste o código da função localizaip para a gente ver se pode ajudar. |
|
| Voltar ao Topo |
|
 |
andreyrf Novato

Registrado: Quinta-Feira, 24 de Abril de 2008 Mensagens: 6
|
Enviada: Ter Ago 28, 2012 10:22 am Assunto: Resposta |
|
|
Agradeço sua ajuda. Segue abaixo a rotina de retornar o IP. Mas acho queo problema não está na rotina, e sim no modo de comunicação da aplicação com a DLL, para que a DLL retorne o IP do PC que ela está alocada em vez de retornar o IP do PC que a aplicação está..
function LocalizaIP: string;
begin
With TIdIPWatch.Create(Nil) do
begin
Result:=LocalIP;
Free;
end;
end; |
|
| Voltar ao Topo |
|
 |
|