//创建图像列表控件 m_imagelist.Create(16,16,ILC_COLOR24|ILC_MASK,0,0); //向图像列表中添加图标 m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON3)); m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON1)); m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2)); m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON4)); HICON hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); m_Tree.SetImageList(&m_imagelist,LVSIL_NORMAL); m_Root=m_Tree.InsertItem("整个网络",0,0); m_Tree.Expand(m_Root,TVE_EXPAND);DWORD Count=0xFFFFFFFF,Bufsize=4096,Res; NETRESOURCE* nRes; NETRESOURCE* nRes1; NETRESOURCE* nRes2; NETRESOURCE* nRes3; HANDLE lphEnum; LPVOID Buf = new char[4096]; LPVOID Buf1 = new char[4096]; LPVOID Buf2 = new char[4096]; LPVOID Buf3 = new char[4096]; //打开网络资源列举 Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER,NULL,&lphEnum); //列举网络资源 Res=WNetEnumResource(lphEnum,&Count,Buf,&Bufsize); nRes=(NETRESOURCE*)Buf; for(DWORD n=0;n<Count;n++,nRes++) { DWORD Count1=0xFFFFFFFF; Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER,nRes,&lphEnum); Res=WNetEnumResource(lphEnum,&Count1,Buf1,&Bufsize); nRes1=(NETRESOURCE*)Buf1; for(DWORD i=0;i<Count1;i++,nRes1++) { m_Group = m_Tree.InsertItem(nRes1->lpRemoteName,1,1,m_Root); DWORD Count2=0xFFFFFFFF; Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER,nRes1,&lphEnum); Res=WNetEnumResource(lphEnum,&Count2,Buf2,&Bufsize); nRes2=(NETRESOURCE*)Buf2; for(DWORD j=0;j<Count2;j++,nRes2++) { CString sName = nRes2->lpRemoteName; sName = sName.Right(sName.GetLength()-2); m_Name = m_Tree.InsertItem(sName,2,2,m_Group); DWORD Count3=0xFFFFFFFF; Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONNECTABLE,nRes2,&lphEnum); Res=WNetEnumResource(lphEnum,&Count3,Buf3,&Bufsize); nRes3=(NETRESOURCE*)Buf3; for(DWORD k=0;k<Count3;k++,nRes3++) { CString sShare = nRes3->lpRemoteName; sShare = sShare.Right(sShare.GetLength()-3-sName.GetLength()); m_Tree.InsertItem(sShare,3,3,m_Name); } } } } delete Buf; delete Buf1; delete Buf2; delete Buf3; WNetCloseEnum(lphEnum);
|