Как получить список компьютеров в рабочей группе?
procedure TForm1.FindAllComputers(Workgroup: String);
var
Computer: array[1..500] of string[25];
ComputerCount: integer;
EnumHandle: THandle;
WorkgroupRS: TNetResource;
Buf: array[1..500] of TNetResource;
BufSize: cardinal;
Entries: cardinal;
Result: integer;
i: integer;
begin
ComputerCount := 0;
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
Inc( ComputerCount );
Computer[ComputerCount] := StrPas( Buf[1].lpRemoteName );
end;
Until ( Entries <> 1 ) or ( Result <> NO_ERROR );
WNetCloseEnum( EnumHandle );
for i := 1 to ComputerCount do
ListBox1.Items.Add( Computer[i] );
end; |