ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Chamar DLL pela rede

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
andreyrf
Novato
Novato


Registrado: Quinta-Feira, 24 de Abril de 2008
Mensagens: 6

MensagemEnviada: Seg Ago 27, 2012 4:57 pm    Assunto: Chamar DLL pela rede Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Ter Ago 28, 2012 8:43 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
andreyrf
Novato
Novato


Registrado: Quinta-Feira, 24 de Abril de 2008
Mensagens: 6

MensagemEnviada: Ter Ago 28, 2012 10:22 am    Assunto: Resposta Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB