1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
   |  
void TFPrincipal::EnumNetRes(NETRESOURCE *nr,int rtype,int rusage)
   {
   AnsiString temp;
   HANDLE hEnum;
   if (WNetOpenEnum(RESOURCE_GLOBALNET,rtype,rusage,nr,&hEnum)!=NO_ERROR)
      return;
   DWORD Count=-1;
   DWORD BufferSize=1024;
   DWORD ReturnVal=0;
   NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
   ZeroMemory(NetRes,BufferSize);
   for (;;)
      {
      ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
      if (ReturnVal==ERROR_MORE_DATA)
         {
         Count=-1;
         delete []NetRes;
         NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
         ZeroMemory(NetRes,BufferSize);
         ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
         }
      if (ReturnVal!=NO_ERROR)   break;
      for (DWORD i=0;i<Count;i++)
         {
         if (NetRes[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER)
         {
            temp=NetRes[i].lpRemoteName;
            LB->Items->Add(temp.SubString(3,temp.Length()));
         }
         if (( NetRes[i].dwUsage & RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER)
            EnumNetRes(&NetRes[i],rtype,rusage);
         }
      if (ReturnVal==ERROR_NO_MORE_ITEMS)
         {
         delete []NetRes;
         WNetCloseEnum(hEnum);
         }
      }
   delete []NetRes;
   WNetCloseEnum(hEnum);
   }
//--------------------------------------------------------------------------- | 
Partager