Rede - listando computadores (por grupo)

Top  Previous  Next

Listando todos os computadores de um grupo:

-------------------------------------------

 

procedure FindAllComputers(Grupo: string; var Lista:TStringList);

var

  WorkgroupRS : TNetResource;

  Buf         : array[1..500of TNetResource;

  R           : Integer;

  EnumHandle, BufSize, Entries: Cardinal;

begin

  Grupo := Grupo + #0;

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

  With WorkgroupRS do

  begin

    dwScope       := 2;

    dwType        := 3;

    dwDisplayType := 1;

    dwUsage       := 2;

    lpRemoteName  := @Grupo[1];

  end;

 

  WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY0, @WorkgroupRS, EnumHandle );

 

  repeat

    Entries := 1;

    BufSize := SizeOf(Buf);

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

   if (R = NO_ERROR) and (Entries = 1) then Lista.Add(StrPas(Buf[1].lpRemoteName));

  until (Entries <> 1or (R <> NO_ERROR);

  WNetCloseEnum( EnumHandle );

end;