如何列出所有网上邻居? |
|
| 2004-05-27 eastvc |
| |
[解决方法]
用WNetEnumResource()和WNetEnumResource(),WNetCloseEnum()来解决,关于此函数的详细说明请到酷库查找.
[程序实现]
建立名为My的对话框工程,添加ListBox控件ID=IDC_LISTBOX1.关联变量为CListBox m_Enum;添加按钮ID=IDC_BUTTON1,关联函数CMyDlg::OnButton1();
在MyDlg.cpp的头部加上:
#pragma comment(lib, "mpr.lib")
void CMyDlg::OnButton1()
{
Enumerate(0);
}
BOOL CMyDlg::Enumerate(LPNETRESOURCE Enum)
{
HANDLE hEnum = 0;
DWORD dwScope = RESOURCE_GLOBALNET ;//枚举范围.
DWORD dwType = RESOURCETYPE_ANY ; //资源类型.
DWORD dwResult = WNetOpenEnum(dwScope,dwType,0,Enum,&hEnum);
if( dwResult != NO_ERROR )
return FALSE;
DWORD dwBuffer = 16384 ; // 16K is reasonable size
DWORD dwEntries = 0xFFFFFFFF ; // enumerate all possible entries
LPNETRESOURCE EnumLocal = 0;
BOOL bRet = TRUE;
do
{
EnumLocal = (LPNETRESOURCE) GlobalAlloc( GPTR, dwBuffer ) ;
dwResult = WNetEnumResource(hEnum,&dwEntries,EnumLocal,&dwBuffer);
if( dwResult == NO_ERROR )
{
for( register DWORD i = 0 ; i < dwEntries ; i++ )
{
CString Enumname;
Enumname = EnumLocal[i].lpRemoteName;
Enumname += " ";
Enumname +=EnumLocal[i].lpLocalName;
Enumname += " ";
Enumname +=EnumLocal[i].lpComment;
m_Enum.AddString(Enumname); //CListBox m_Enum;
if( RESOURCEUSAGE_CONTAINER ==
(EnumLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER) &&
EnumLocal[i].dwDisplayType != RESOURCEDISPLAYTYPE_SERVER )
if( !Enumerate( &EnumLocal[i]) )
{
//TRACE0( "Enumerate(): Failed\n" );
return FALSE;
}
}
}
else
if( dwResult != ERROR_NO_MORE_ITEMS )
{
//AfxMessageBox("WNetEnumResource return Error_NO_MORE_ITEMS");
return FALSE;
}
} while( dwResult != ERROR_NO_MORE_ITEMS );
if( EnumLocal )
GlobalFree((HGLOBAL) EnumLocal) ;
WNetCloseEnum(hEnum) ;
return bRet;
}
|
|
| |
|
发表评论
推荐文章
关闭窗口
|
|
|
|