Показать сообщение отдельно
  #3  
Старый 10.12.2010, 09:15
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

очень давно (судя по дате NetRes.res 1999г.) что-то похожее писал http://data.cod.ru/79106
основной момент
Код:
...
function Tfrm.EnumerateFunc(NetResource: PNetResource): boolean;
type
    PNetResourceArray=^TNetResourceArray;
    TNetResourceArray=array[0..MaxInt div SizeOf(TNetResource) - 1] of TNetResource;
var
   NetResult: integer;
   NetHandle: THandle;
   NetResources: PNetResourceArray;
   BufSize: dword;
   Count, Size: dword;
   i: integer;
   NR: TNetResource;
begin
     result:=false;
     NetResources:=nil;
     BufSize:=0;
     NetResult:=WNetOpenEnum(RESOURCE_GLOBALNET,
                  RESOURCETYPE_ANY,
                  0,
                  NetResource,
                  NetHandle);
     Application.ProcessMessages;
     if NetResult<>NO_ERROR then Exit;
     try
       BufSize:=1024*SizeOf(PNetResource);
       GetMem(NetResources, BufSize);
       while true do
       begin
         Count:=$0ffffffff;
         Size:=BufSize;
         NetResult:=WNetEnumResource(NetHandle,
                                     Count,
                                     NetResources,
                                     Size);
         if NetResult<>NO_ERROR then break;
         for i:=0 to Count-1 do
         begin
           Application.ProcessMessages;
           NR:=NetResources^[i];
           AddTreeView(NR);
           if RESOURCEUSAGE_CONTAINER=(NR.dwUsage and RESOURCEUSAGE_CONTAINER) then
             EnumerateFunc(@NetResources[i]);
         end;
       end;
     finally
       FreeMem(NetResources, BufSize);
     end;
     WNetCloseEnum(NetHandle);
     result:=true;
end;
...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием