Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

Список сетевых компьютеров в C++ Builder   Найти похожие ветки 

 
lightix   (2004-05-16 17:44) [0]

Нашел в FAQ"e пример для поиска сетевых компьютеров написанный в Delphi. Пытаюсь подогнать его для использования в C++ Builder и никак не получается - при компиляции ругается на несоотвествие типов данных и т.п.
Поджскажите в чем моя ошибка?


 THandle EnumHandle;
 TNetResource WorkgroupRS;
 TNetResource Buf[500];
 Word BufSize;
 Word Entries;
 Word Result;

 WorkgroupRS.dwScope = 2;
 WorkgroupRS.dwType = 3;
 WorkgroupRS.dwDisplayType = 1;
 WorkgroupRS.dwUsage = 2;
 WorkgroupRS.lpRemoteName = &Workgroup[0];

 WNetOpenEnum( RESOURCE_GLOBALNET,
               RESOURCETYPE_ANY,
               0,
               &WorkgroupRS,
               &EnumHandle); // Вот здесь выдает ошибку
/*
[C++ Error] unetsearchclient.cpp(107): E2034 Cannot convert "unsigned int *" to "void * *"
[C++ Error] unetsearchclient.cpp(107): E2342 Type mismatch in parameter "lphEnum" (wanted "void * *", got "unsigned int *")
*/

do
{
 Entries =1;
 BufSize = sizeof(Buf);
 Result =
          WNetEnumResource( EnumHandle,
                            Entries,
                            &Buf,
                            &BufSize ); // И вот здесь тоже
/*
[C++ Error] unetsearchclient.cpp(116): E2034 Cannot convert "unsigned int" to "void *"
[C++ Error] unetsearchclient.cpp(116): E2342 Type mismatch in parameter "hEnum" (wanted "void *", got "unsigned int")
[C++ Error] unetsearchclient.cpp(116): E2034 Cannot convert "int" to "unsigned long *"
[C++ Error] unetsearchclient.cpp(116): E2342 Type mismatch in parameter "lpcCount" (wanted "unsigned long *", got "unsigned short")
[C++ Error] unetsearchclient.cpp(116): E2034 Cannot convert "unsigned short *" to "unsigned long *"
[C++ Error] unetsearchclient.cpp(116): E2342 Type mismatch in parameter "lpBufferSize" (wanted "unsigned long *", got "unsigned short *")
*/
  if (Result == NO_ERROR&&Entries == 1)
  {
  Memo1->Lines->Add(AnsiString(Buf[1].lpRemoteName));
  }
} while (Entries!=1||Result!=NO_ERROR);

WNetCloseEnum( EnumHandle ); //И здесь тоже ошибка
/*
[C++ Error] unetsearchclient.cpp(123): E2034 Cannot convert "unsigned int" to "void *"
[C++ Error] unetsearchclient.cpp(123): E2342 Type mismatch in parameter "hEnum" (wanted "void *", got "unsigned int")
[C++ Warning] unetsearchclient.cpp(125): W8004 "BufSize" is assigned a value that is never used
*/


 
Rouse_ ©   (2004-05-16 18:08) [1]

DWORD WNetOpenEnum(
 DWORD dwScope,                // scope of enumeration
 DWORD dwType,                 // resource types to list
 DWORD dwUsage,                // resource usage to list
 LPNETRESOURCE lpNetResource,  // resource structure
 LPHANDLE lphEnum              // enumeration handle buffer
);

DWORD WNetEnumResource(
 HANDLE hEnum,          // handle to enumeration
 LPDWORD lpcCount,      // entries to list
 LPVOID lpBuffer,       // buffer
 LPDWORD lpBufferSize   // buffer size
);

DWORD WNetCloseEnum(
 HANDLE hEnum   // handle to enumeration
);


 
Rouse_ ©   (2004-05-16 18:10) [2]

BOOL WINAPI EnumerateFunc(HWND hwnd,
                         HDC hdc,
                         LPNETRESOURCE lpnr)
{
 DWORD dwResult, dwResultEnum;
 HANDLE hEnum;
 DWORD cbBuffer = 16384;      // 16K is a good size
 DWORD cEntries = -1;         // enumerate all possible entries
 LPNETRESOURCE lpnrLocal;     // pointer to enumerated structures
 DWORD i;
 //
 // Call the WNetOpenEnum function to begin the enumeration.
 //
 dwResult = WNetOpenEnum(RESOURCE_GLOBALNET, // all network resources
                         RESOURCETYPE_ANY,   // all resources
                         0,        // enumerate all resources
                         lpnr,     // NULL first time the function is called
                         &hEnum);  // handle to the resource

 if (dwResult != NO_ERROR)
 {  
   //
   // Process errors with an application-defined error handler.
   //
   NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetOpenEnum");
   return FALSE;
 }
 //
 // Call the GlobalAlloc function to allocate resources.
 //
 lpnrLocal = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer);
 
 do
 {  
   //
   // Initialize the buffer.
   //
   ZeroMemory(lpnrLocal, cbBuffer);
   //
   // Call the WNetEnumResource function to continue
   //  the enumeration.
   //
   dwResultEnum = WNetEnumResource(hEnum,      // resource handle
                                   &cEntries,  // defined locally as -1
                                   lpnrLocal,  // LPNETRESOURCE
                                   &cbBuffer); // buffer size
   //
   // If the call succeeds, loop through the structures.
   //
   if (dwResultEnum == NO_ERROR)
   {
     for(i = 0; i < cEntries; i++)
     {
       // Call an application-defined function to
       //  display the contents of the NETRESOURCE structures.
       //
       DisplayStruct(hdc, &lpnrLocal[i]);

       // If the NETRESOURCE structure represents a container resource,
       //  call the EnumerateFunc function recursively.

       if(RESOURCEUSAGE_CONTAINER == (lpnrLocal[i].dwUsage
                                      & RESOURCEUSAGE_CONTAINER))
         if(!EnumerateFunc(hwnd, hdc, &lpnrLocal[i]))
           TextOut(hdc, 10, 10, "EnumerateFunc returned FALSE.", 29);
     }
   }
   // Process errors.
   //
   else if (dwResultEnum != ERROR_NO_MORE_ITEMS)
   {
     NetErrorHandler(hwnd, dwResultEnum, (LPSTR)"WNetEnumResource");
     break;
   }
 }
 //
 // End do.
 //
 while(dwResultEnum != ERROR_NO_MORE_ITEMS);
 //
 // Call the GlobalFree function to free the memory.
 //
 GlobalFree((HGLOBAL)lpnrLocal);
 //
 // Call WNetCloseEnum to end the enumeration.
 //
 dwResult = WNetCloseEnum(hEnum);
 
 if(dwResult != NO_ERROR)
 {
   //
   // Process errors.
   //
   NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetCloseEnum");
   return FALSE;
 }

 return TRUE;
}



Страницы: 1 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-1087761409
Yegorchic
2004-06-20 23:56
2004.07.11
Принтер и цвет...


1-1088071926
AlexeyA
2004-06-24 14:12
2004.07.11
Delphi (используемая приложением память)


1-1087997689
XeLax
2004-06-23 17:34
2004.07.11
преобразовать строку


1-1088005401
Ivolg
2004-06-23 19:43
2004.07.11
Снимок


1-1088003458
tria
2004-06-23 19:10
2004.07.11
Как сделать, чтобы вид окон под ХР не портился?