Форум: "Сети";
Текущий архив: 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