//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);