if EnumError = NO_ERROR then begin WorkGroupEntries := MaxEntries; EnumBufferLength := SizeOf(EnumWorkGroupBuffer); EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);
if EnumError = NO_ERROR then begin for I := 1 to WorkGroupEntries do begin EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle); if EnumError = NO_ERROR then begin ComputerEntries := MaxEntries; EnumBufferLength:= SizeOf(EnumComputerBuffer); EnumError:=WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength); if EnumError = NO_ERROR then for J := 1 to ComputerEntries do Computers.Add(Copy(EnumComputerBuffer[J]. lpRemoteName, 3, Length(EnumComputerBuffer[J]. lpRemoteName) - 2)); WNetCloseEnum(EnumComputerHandle); end; end; end; WNetCloseEnum(EnumWorkGroupHandle); end;
if EnumError = ERROR_NO_MORE_ITEMS then EnumError := NO_ERROR; Result := EnumError;