Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Список сетевых компьютеров в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.047 c
1-1087971630
BorisMor
2004-06-23 10:20
2004.07.11
XML парсер


1-1088363209
Кастуся
2004-06-27 23:06
2004.07.11
SwapMemory


1-1087902478
cdadmitriy
2004-06-22 15:07
2004.07.11
Как перерисовать один NODE in TTreeView без изменения текста


3-1086980650
Karburator
2004-06-11 23:04
2004.07.11
объединить две таблицы, но...


4-1085563007
diMAN
2004-05-26 13:16
2004.07.11
Имя пользователя с правами которого запущена программа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский