La Web del Programador: Comunidad de Programadores
 
    Pregunta:  44330 - CóMO ENCONTRAR OTROS ORDENADORES CONECTADOS A LA MISMA RED
Autor:  Lic. Néstor Alvarez
Quiero saber como hacer para encontrar al menos los IP de las maquinas que estan conectadas a mi red local, y así saber quien esta conectado y quien no.

  Respuesta:  Reynaldo Téllez Menocal
Hola, para dar solución a tu problema reviza el código a continuación:

procedure TForm1.Button3Click(Sender: TObject);
var
RecursoRed :TNetResource;
Mango :THandle;
NumeroEntradas :DWord;

LongBuffer :DWord;

begin
LongBuffer:=SizeOf(Buffer);

if WNetOpenEnum( RESOURCE_CONTEXT,//RESOURCE_CONNECTED,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,//RESOURCEUSAGE_CONNECTABLE,
nil,
Mango
)<> No_ERROR then ShowMessage('Error');

NumeroEntradas:=10;

WNetEnumResource( Mango,
NumeroEntradas,
@Buffer[1],
LongBuffer
);

Memo1.Lines.Clear;
for n:=1 to NumeroEntradas do
memo1.Lines.Append(String(Buffer[n].lpRemoteName) + ' ' + String(Buffer[n].lpProvider)) ;

end;

a, se me por poco se me olvida, esta units tienes que ponerlas en el uses: ComCtrls, StdCtrls, ShellApi, ShellCtrls,ShlObj ademas de en la declaraciones de variables las siguientes variables: Buffer :Array [1..100] of TNetResource; y n : Integer;, con este codigo obtengo todas las PC de mi subred y si revizas con un poco de profundidad verás las demás cosas que te brinda, pero eso lo dejo a tu gusto. Espero que te sirva de algo.

Saludos