Телефон: +7 (926) 245-03-63

Как узнать доступные сетевые ресурсы?

Следующая статья: Как создать индексный файл из приложения?

type PNetResourceArray=^TNetResourceArray;
TNetResourceArray=array[0..MaxInt div SizeOf(TNetResource) - 1] of TNetResource; 
procedure EnumResources(LpNR: PNetResource); 
var NetHandle: THandle; I, BufSize, NetResult: Integer; 
NetResources: PNetResourceArray; 
NewItem: TListItem; Count, size:DWORD; 
begin 
 if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, LpNR, NetHandle)<>NO_ERROR then Exit; 
 try 
  BufSize:=50 * SizeOf(TNetResource); 
  GetMem(NetResources, BufSize); 
  try 
  while True do 
  begin 
   Count:=$FFFFFFFF; 
   Size:=BufSize; 
   NetResult:=WNetEnumResource(NetHandle, Count, NetResources, Size); 
   if NetResult=ERROR_MORE_DATA then 
   begin
     BufSize:=Size; 
     ReallocMem(NetResources, BufSize); 
     Continue;
   end; 
   if NetResult<>NO_ERROR then Exit; 
   for I:=0 to Count-1 do begin with NetResources^[I] do 
   begin 
    if RESOURCEUSAGE_CONTAINER=(DwUsage and RESOURCEUSAGE_CONTAINER) then EnumResources(@NetResources^[I]); 
    if dwDisplayType=RESOURCEDISPLAYTYPE_SHARE then 
    begin
// ^^^^^^^^^^^^^^^^^^^^^^^^^ - ресурс
// RESOURCEDISPLAYTYPE_SERVER - компьютер
// RESOURCEDISPLAYTYPE_DOMAIN - рабочая группа
// RESOURCEDISPLAYTYPE_GENERIC - сеть NewItem:=Form1.ListView1.Items.Add; 
NewItem.Caption:=LpRemoteName; 
end; 
end; 
end; 
end; 
finally FreeMem(NetResources, BufSize); end; finally WNetCloseEnum(NetHandle); end; end; 
procedure TForm1.Button1Click(Sender: TObject); var Oldcursor:TCursor; 
begin 
 OldCursor:=Screen.Cursor;
 Screen.Cursor:=crHourGlass; 
 with ListView1.Items do
 begin 
  BeginUpdate;
  Clear;
  EnumResources(nil);
  EndUpdate;
 end; 
 Screen.Cursor:=OldCursor; 
end;

Примечание: Добавляем в uses модуль ComCtrls.

Интересное в интернете: купить перчатки х б