Olá pessoal, Eu tenho um software chamado Lan Messenger, que está no meu blog, super downloads e meus downloads. E alguns usuários me retornaram um problema com o windows vista, onde as máquinas não são listadas. E como estou usando um componente de terceiro para listar as máquinas, decidi achar um outro método para fazer isso sem usar componentes.
Ai achei um função para listar as máquinas da rede + IP em um blog: http://www.adrianosantos.pro.br/pub/estacoes.zip Sendo que testando ele funcionou a parte de listagem das máquinas, mas a função de obter o IP pela máquina não funciona. Debugando vi que ocorria um Access Violation. Segue a função: ---------------------------------------------------------------------------------------------------------------------------------------- function TForm1.GetIP(AEstacao: string): string; var WSAData: TWSAData; HostEnt: PHostEnt; begin WSAStartup(2, WSAData); HostEnt := GetHostByName(PAnsiChar(AEstacao)); with HostEnt^ do Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup; end; ---------------------------------------------------------------------------------------------------------------------------------------- A linha que ocorre a exceção é: Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); Procurando na net, vi que todos usavam a mesma função. O que pode estar errado? Existe outra técnica para isso? -- Atenciosamente, Paulo Coutinho. Blog: www.prsolucoes.com/blog Site: www.prsolucoes.com Msn: pa...@prsolucoes.com [As partes desta mensagem que não continham texto foram removidas]