Dolnoto stawa no otkriwa mashinite w LAN mreja
//---------------------------------------------------------------------------
#include <vcl.h>
#include<windows.h>
#include<iostream.h>
#include<list>
#include<vector>
#include<string>
using namespace std;
#pragma hdrstop
/*class CEasyEnumNetResourceAbstract
{
protected:
DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE netRc;
public:
CEasyEnumNetResourceAbstract ()
{
//cEntries = -1 ;
cEntries=16;
cbBuffer = 16384;
netRc=0;
netRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);
}
~CEasyEnumNetResourceAbstract ()
{
::GlobalFree((HGLOBAL)netRc);
}
virtual void GetResource()=0;
void OpenEnum();
};
void CEasyEnumNetResourceAbstract::OpenEnum()
{
dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 1\n";
GetResource();
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 2\n";
}
class CEasyEnumProvider:public CEasyEnumNetResourceAbstract
{
public:
void GetResource();
};
void CEasyEnumProvider::GetResource()
{
DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE netRc;
cEntries=16;
cbBuffer = 16384;
netRc=0;
netRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);
dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 1\n";
do
{
dwResult = WNetEnumResource(hEnum,&cEntries,netRc,&cbBuffer);
if( dwResult == NO_ERROR )
{
for(ini i=0;i<cEntries;i++)
if(netRc.lpRemoteName)
cout<<netRc.lpRemoteName<<"\n";
else
cout<<netRc.lpComment<<"\n";
}
else break;
}while( dwResult != ERROR_NO_MORE_ITEMS );
::GlobalFree((HGLOBAL)netRc);
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
cout<<"greshka 2\n";
} */
void GetResource(LPNETRESOURCE netRc,list<LPNETRESOURCE> &ls)
{
DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE ArrayNetRc;
cEntries=16;
cbBuffer = 16384;
//netRc=0;
ArrayNetRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);
dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0,netRc, &hEnum);
if(dwResult != NO_ERROR){
//cout<<"greshka 1\n";
return;
}
do
{
dwResult = WNetEnumResource(hEnum,&cEntries,ArrayNetRc,&cbBuffer);
if( dwResult == NO_ERROR )
{
for(int i=0;i<cEntries;i++)
{
if(ArrayNetRc.lpRemoteName)
ls.push_back(&ArrayNetRc);
//cout<<ArrayNetRc.lpRemoteName<<"\n";
// else
// cout<<ArrayNetRc.lpComment<<"\n";
// if(ArrayNetRc.dwUsage && RESOURCEUSAGE_CONTAINER )
//netRc=&ArrayNetRc;
//GetResource(&ArrayNetRc);
}
}
else break;
}while( dwResult != ERROR_NO_MORE_ITEMS );
//::GlobalFree((HGLOBAL)ArrayNetRc);
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
return;
}
void GetResource_STR(LPNETRESOURCE netRc,list<string> &ls)
{
DWORD cEntries;
DWORD cbBuffer;
DWORD dwResult;
HANDLE hEnum;
LPNETRESOURCE ArrayNetRc;
cEntries=16;
cbBuffer = 16384;
//netRc=0;
ArrayNetRc = (LPNETRESOURCE) ::GlobalAlloc(GPTR, cbBuffer);
dwResult = ::WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0,netRc, &hEnum);
if(dwResult != NO_ERROR){
//cout<<"greshka 1\n";
return;
}
do
{
dwResult = WNetEnumResource(hEnum,&cEntries,ArrayNetRc,&cbBuffer);
if( dwResult == NO_ERROR )
{
for(int i=0;i<cEntries;i++)
{
if(ArrayNetRc.lpRemoteName)
ls.push_back(ArrayNetRc.lpRemoteName);
//cout<<ArrayNetRc.lpRemoteName<<"\n";
// else
// cout<<ArrayNetRc.lpComment<<"\n";
// if(ArrayNetRc.dwUsage && RESOURCEUSAGE_CONTAINER )
//netRc=&ArrayNetRc;
//GetResource(&ArrayNetRc);
}
}
else break;
}while( dwResult != ERROR_NO_MORE_ITEMS );
//::GlobalFree((HGLOBAL)ArrayNetRc);
dwResult = ::WNetCloseEnum(hEnum);
if (dwResult != NO_ERROR)
return;
}
void info(const list<LPNETRESOURCE>& ls)
{
cout<<"*************************************************\n";
list<LPNETRESOURCE>::const_iterator i;
for(i=ls.begin();i!=ls.end();i++)
cout<<((LPNETRESOURCE)*i)->lpRemoteName<<endl;
//cout<<"*************************************************\n";
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int k,j;
list<LPNETRESOURCE> ls_1;
list<LPNETRESOURCE>::iterator i;
LPNETRESOURCE netRc;
netRc=(LPNETRESOURCE) ::GlobalAlloc(GPTR, 16384);
GetResource(netRc,ls_1);
vector< list<LPNETRESOURCE> > vls_1(ls_1.size());
//"*************************************************\n";
for(i=ls_1.begin(),j=0;i!=ls_1.end();i++,j++)
GetResource(*i,vls_1[j]);
// unsigned sum=0;
// for(j=0;j<vls_1.size();j++)
// if(!vls_1[j].empty())
// sum+=vls_1[j].size();
// cout<<"sum="<<sum<<endl;
list<string> ls_str;
for(j=0;j<vls_1.size();j++)
if(!vls_1[j].empty())
for(i=vls_1[j].begin();i!=vls_1[j].end();i++)
GetResource_STR(*i,ls_str);
//*************************** Wajno ****************************
list<string>::const_iterator l;
for(l=ls_str.begin();l!=ls_str.end();l++)
cout<<((string)*l)<<endl;
//*********************************************************************
/* for(j=0;j<vls_1.size();j++)
if(!vls_1[j].empty())
info(vls_1[j]); */
//"*************************************************\n";
::GlobalFree((HGLOBAL)netRc);
cout<<"\n *************** END ********************** \n";
cin>>k;
return 0;
}
//---------------------------------------------------------------------------
|