1、一、创建对话框应用程序二、编辑对话框资源控件 ID及标题IDC_LIST1IDC_GETNEIGHBOR 获取网上邻居三、添加变量、函数1、添加变量2、添加消息响应函数3、添加类成员函数四、添加代码BOOL CGetNeighborDlg:Enumerate(LPNETRESOURCE lpNetRC_p, int depth)HANDLE hEnum = 0;DWORD dwScope = RESOURCE_GLOBALNET ;DWORD dwType = RESOURCETYPE_ANY ;DWORD dwResult = WNetOpenEnum(dwScope, / scope of
2、 enumerationdwType, / resource types to list0, / enumerate all resourceslpNetRC_p, / pointer to resource structure (NULL at first time)if( dwResult != NO_ERROR )return FALSE;DWORD dwBuffer = 16384 ; / 16K is reasonable sizeDWORD dwEntries = -1 ; /-1, enumerate all possible entriesLPNETRESOURCE lpnrL
3、ocal = 0;BOOL bRet = TRUE;do/ first allocate buffer for NETRESOURCE structures .lpnrLocal = (LPNETRESOURCE) GlobalAlloc( GPTR, dwBuffer ) ;dwResult = WNetEnumResource(hEnum, / resource-handleif( dwResult = NO_ERROR )for(DWORD i = 0 ; iAddString(nsname);if(depth=2) /userlistbox-AddString(“ “+nsname);
4、m_NeighborList.AddTail(nsname);m_List.AddTail(nsname+CString(depth);if( RESOURCEUSAGE_CONTAINER = (lpnrLocali.dwUsage /throw CNetworkBreak(FALSE);/ return FALSE; else if( dwResult != ERROR_NO_MORE_ITEMS ) return FALSE; while( dwResult != ERROR_NO_MORE_ITEMS );if( lpnrLocal )GlobalFree(HGLOBAL) lpnrL
5、ocal) ;WNetCloseEnum(hEnum) ;return bRet;void CGetNeighborDlg:OnGetneighbor() / TODO: Add your control notification handler code hereCListBox *listbox=(CListBox*)GetDlgItem(IDC_LIST1);listbox-ResetContent();BeginWaitCursor();EnableWindow(FALSE);Enumerate(0,0);EndWaitCursor();EnableWindow(TRUE);m_Lis
6、t.RemoveAll();m_NeighborList.RemoveAll(); 五、添加对象/库模块 点“工程”,点“设置”,点选“连接”,添加“MPR.LIB ws2_32.lib.”模块。六、编译七、运行七、函数说明1、WNetOpenEnum 函数声明DWORD WNetOpenEnum(DWORD dwScope,DWORD dwType,DWORD dwUsage,LPNETRESOURCE lpNetResource,LPHANDKE lphEnum)dwScope:指定列举范围。dwType:指定列举资源类型。dwUsage:指定列举资源用法。第一个参数 dwScope为RE
7、SOURCE_GLOBALNET,则该参数被勿略。lpNetResource:指向包含列举资源相关信息之 NETRESOURCE结构的指针。lphEnum:指向列举变量之句柄指针,为调用 WNetEnumResource()函数做准备。功能:开始一网络资源或存在的网络连接枚举值。成功则返回非零值;失败则返回 FALSE。2、WNetEnumResource 函数声明DWORD WNetEnumResource(HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer,LPDWORD lpBufferSize)hEnum:WNetOpenEnum()函数返回的标
8、识某枚举实例之句柄。lpcCount:指定枚举条目数量。lpBuffer:指向取得枚举结果之缓冲区指针,用 NETRESOURCE结构数组表示。lpBufferSize:指定上述缓冲区大小。功能:获取详细网络资源信息。3、NETRESOURCE 结构定义typedef struct_NETRESOURCEDWORD dwScope; /指定列举范围DWORD dwType; /指定列举资源类型DWORD dwDisplayType; /表示网络浏览用户接口显示该网络实体之方式DWORD dwUsage; /指定列举资源用法DWORD dwScopeLocalname;DWORD dwRemoteName; /指向网络中远程计算机名DWORD dwComment;DWORD dwPrivider;NETRESOURCE4、WNetCloseEnum 函数声明DWORD WNetCloseEnum(HANDLE hEnum)hEnum:WNetCloseEnum()函数建造的枚举句柄。功能:结束网络资源枚举。成功则返回非零值;失败则返回FALSE。