用VC列表显示所有网上邻居

网上邻居的查找在www.codeguru.com上有例子,只是它

把它做成了类,本是好事,但对大家理解它的原理增加了难度,

所以现在把它实现在一对话框中,以便大家能一目了然。

#include <winnetwk.h>
#pragma comment(lib, “mpr.lib”)
BOOL CNetEnum2Dlg::Enumerate(LPNETRESOURCE lpNetRC_p)
{
HANDLE hEnum = 0;
DWORD dwScope = RESOURCE_GLOBALNET ;
DWORD dwType = RESOURCETYPE_ANY ;
DWORD dwResult = WNetOpenEnum(
dwScope, // scope of enumeration
dwType, // resource types to list
0, // enumerate all resources
lpNetRC_p, // pointer to resource structure (NULL at first time)
&hEnum // handle to resource
) ;
if( dwResult != NO_ERROR )
return FALSE;
DWORD dwBuffer = 16384 ; // 16K is reasonable size
DWORD dwEntries = 0xFFFFFFFF ; // enumerate all possible entries
LPNETRESOURCE lpnrLocal = 0;
BOOL bRet = TRUE;
//try
{
do
{
// first allocate buffer for NETRESOURCE structures ...
lpnrLocal = (LPNETRESOURCE) GlobalAlloc( GPTR, dwBuffer ) ;
dwResult = WNetEnumResource(
hEnum, // resource-handle
&dwEntries,
lpnrLocal,
&dwBuffer
) ;
if( dwResult == NO_ERROR )
{
for( register DWORD i = 0 ; i
{
CString nsname;
nsname = lpnrLocal[i].lpRemoteName;
nsname += " ";
nsname +=lpnrLocal[i].lpLocalName;
nsname += " ";
nsname +=lpnrLocal[i].lpComment;
m_netList.AddString(nsname); // m_netList defined in NetEnumDlg2.h : CListBox m_netList;
if( RESOURCEUSAGE_CONTAINER ==
(lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER) &&
lpnrLocal[i].dwDisplayType != RESOURCEDISPLAYTYPE_SERVER )
if( !Enumerate( &lpnrLocal[i]) )
{
//TRACE0( "CNetwork::Enumerate(): recursiv call failedn" );
//throw CNetworkBreak(FALSE);
return FALSE;
}
}
} else if( dwResult != ERROR_NO_MORE_ITEMS )
{
//AfxMessageBox("WNetEnumResource");
return FALSE;
}
} while( dwResult != ERROR_NO_MORE_ITEMS );
}
if( lpnrLocal )
GlobalFree((HGLOBAL) lpnrLocal) ;
WNetCloseEnum(hEnum) ;
return bRet;
}
void CNetEnum2Dlg::OnListWNet()
{
Enumerate(0);
}

时间: 2024-10-01 21:40:34

用VC列表显示所有网上邻居的相关文章

使用路由器后能正常上网但网上邻居不能访问的解决方法

路由器对内网电脑之间的互访是不存在任何限制的,不存在因为路由器中做了什么设置而导致内网之间无法互访的问题. 下面列举几个"网上邻居"无法访问的几个常见故障和解决方法: (1)没有共享资源/共享服务未启用. 症状:电脑与电脑间可以Ping通,但无法访问共享资源,在"计算机管理"中查看"本地共享"后会弹出"没有启动服务器服务"的错误对话框. 解决:在控制面板-管理工具-服务中启动Server服务.并设置"启动类型&quo

加快Windows 2000访问网上邻居的速度

在部分机器的Windows 2000中打开"邻近的计算机",常常会等上几十秒的时间,让人无法忍受.仔细分析会发现,在找到的计算机当中,包括"打印机"和"任务计划"两项.通过"网上邻居"浏览计算机时,Windows 2000会先搜索自己的共享目录.可作为网络共享的打印机以及"任务计划"中与网络有关的计划任务,这势必会影响到浏览速度.所以,应该取消搜索"打印机"和"任务计划&quo

“网上邻居”技巧两则

1.快速转入网上邻居窗口 当我们正处于Windows系统的资源管理器窗口中,来对文件夹进行管理和编辑时,突然需要通过网上邻居窗口进入到某特定工作站中访问一个共享文件,这个时候我们会不会选择关闭系统资源管理器窗口.返回到系统桌面中通过双击图标的方法打开网上邻居窗口呢?相信有不少朋友会采用这种方法进入网上邻居窗口,这种方法尽管没什么错误,但是从追求操作高效的角度来看,还有更好.更快捷的方法快速转入网上邻居窗口,那就是在资源管理器采用"Web视图"方式显示时,我们会在资源管理器窗口的左侧看到

打开时网上邻居需要访问密码的解决

最近需要传份文件给朋友,可却出现了好多问题无法解决. 现给大家分享下经验: 要实现共享.打开网上邻居以后,看到工作组计算机随便选一个打开都弹出对话框,用户名为"访问主机名/Guest",并且提示输入密码,根本没有设置密码,如何... 1.打开我的电脑,点菜单栏上的工具,下拉,点击文件夹选项,查看中,在[使用简单文件共享(推荐)]这项前面打上勾. 2.开始-运行-gpedit.msc-计算机配置-WINDOWS设置-安全设置-本地策略-用户权限指派-双击"拒绝从网络访问这台计算

win7系统网上邻居不见怎么找回?

  win7系统网上邻居不见怎么找回? 从win7系统开始,已经将之前的"网上邻居"改为了"网络",当然这两者之间的功能基本上是相同的; 方法一: 1.最简单的方法就是在电脑桌面的空白处单击鼠标右键,然后选择"个性化"; 2.然后在个性化窗口的左侧点击"更改桌面图标",然后在桌面图标设置的界面里,我们将"网络"前面的选框选中即可;

电脑找不到网上邻居的解决

今天装完Windows 2000 两台电脑链接的时候,从网上邻居里并没有发现对方的电脑.试了好多种方法还是没有找到,还是一个同学在运行里面输入了 gpedit.msc的字样才提醒了我.可能是组策略里面限制了局域网内部的互访.我打开了我的这台电脑的组策略,从里面还真的找到了如禁用文件共享的字样,改成已启用以后一切OK了.原来如此,默认的Windows 2000也会禁用文件共享.     不能互访的情况也有很多种,比如workstation 和server这两项服务没有打开.这种情况也是这两项服务设

XP系统下桌面“网上邻居”图标如何显示

  方法一 在桌面空白处鼠标右键单击"属性"按钮 切换到"桌面"标签,点击"自定义桌面" 进入"常规"界面,将桌面图标里的网上邻居勾上,一路点击"确定"

WinXP打不开网上邻居的处理方法

在网络维护中,经常会遇到打不开网上邻居的问题,现整理了打不开网上邻居的处理方法,供大家在遇到此问题时参考.下面是打不开网上邻居的处理方法: (1)安装NWlinkIPX/SPX/NetBIOSCompatibleTransportProtocol协议. (2)开启guest账号:右击我的电脑管理用户有个guest,双击之去掉"账户已停用"前面的勾. (3)右击我的电脑属性计算机名,查看该选项卡中出现的局域网工作组名称,工作组名称要一致. (4)使用winxp防火墙的例外:winxp防火

win7网上邻居怎么打开?

  技巧一: 微软在win7系统中将"网上邻居"重命名为"网络",所以很多用户都不知道网上邻居,除了在桌面中打开之外,也可以打开桌面"计算机"然后在左侧菜单最下面找到"网络"点击即可,该网络就是那熟悉的网上邻居. win7网上邻居 技巧二: 利用"开始"菜单中搜索功能来快速搜索打开"网上邻居",在win7中打开"开始"菜单,并在搜索框中输入"网络"