Localizar Computadores da Rede

Esta dica mostra como localizar todos os computadores de uma rede, basta que você saiba o nome do seu grupo de trabalho...

//Primeiro eu declaro a procedure abaixo:

procedure GetComputers(Workgroup : String;Retorno:TStrings);

Var

  EnumHandle: THandle;

  WorkgroupRS: TNetResource;

  Buf: Array[1..500] of TNetResource;

  BufSize: cardinal;

  Entries: CARDINAL;

  Result: dword;

 

begin

  Retorno.Clear;

  Workgroup := Workgroup + #0;

  FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);

  With WorkgroupRS do begin

dwScope := 2;

dwType := 3;

dwDisplayType := 1;

dwUsage := 2;

lpRemoteName := @Workgroup[1];

  end;

  WNetOpenEnum( RESOURCE_GLOBALNET,

RESOURCETYPE_ANY,

0,

@WorkgroupRS,

EnumHandle );

 

  Repeat

Entries := 1;

BufSize := SizeOf(Buf);

Result := WNetEnumResource(EnumHandle,Entries,@Buf,BufSize);

   If (Result = NO_ERROR) and (Entries = 1) then begin

Retorno.Add(StrPas(Buf[1].lpRemoteName));

end;

  Until (Entries <> 1) or (Result <> NO_ERROR);

  WNetCloseEnum(EnumHandle);

end;  { Find All computers }

//===================

 

//Exemplo de uso:

 

GetComputers(MSHOME,Memo1.Lines);

Artigos relacionados