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