NowCan及各位对系统熟系的朋友请来帮忙。

jianlinlong 2003-05-12 06:28:42
以下代码是从NowCan的个人主页上copy下来并改的,功能是查找网络上的所有计算机。能在win98,win2000上执行,到winnt 4.0(sp6)就执行不了,头晕中。

代码:
--------------------------------------------------------------------
bool TfrmMain::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;

AnsiString sComputerName;
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 (DWORD i=0; i<dwEntries; i++)
{
if (RESOURCEUSAGE_CONTAINER ==
(lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER) &&
lpnrLocal[i].dwDisplayType != RESOURCEDISPLAYTYPE_SERVER)
{
if (!Enumerate(&lpnrLocal[i])) {
throw Exception("在网上查找计算机失败!");
}
}else{
sComputerName = lpnrLocal[i].lpRemoteName; //计算机名
sComputerName.Delete(1, 2);
// AddListviewItem(sComputerName, lpnrLocal[i].lpComment);
}
}
}
} while (dwResult != ERROR_NO_MORE_ITEMS);
}catch(...){
bRet = false;
}

if (lpnrLocal)
GlobalFree((HGLOBAL)lpnrLocal) ;

WNetCloseEnum(hEnum) ;
return bRet;
}
...全文
87 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2003-05-15
  • 打赏
  • 举报
回复
学习!
NowCan 2003-05-13
  • 打赏
  • 举报
回复
我来了,但是,帮不了忙。我这里没有NT4的机器。
执行不了有什么出错提示吗?
poweruser 2003-05-13
  • 打赏
  • 举报
回复
呵呵现在nt4的机器可不好找了

那只好慢慢来了,在所有可能导致错误的地方加断点,调试。如果嫌麻烦,也可以把出错信息输出到一个Memo里去。

慢慢调试,把取值的地方打印出来用debug monitor查看
NowCan 2003-05-13
  • 打赏
  • 举报
回复
那只好慢慢来了,在所有可能导致错误的地方加断点,调试。如果嫌麻烦,也可以把出错信息输出到一个Memo里去。
jianlinlong 2003-05-13
  • 打赏
  • 举报
回复
我在一个Button的OnClick事件中写入上面的代码, 在98和2000上能找出网络上的所有计算机。在NT上执行的时候就没有作用了(好像这个Button的OnClick事件为空一样,点击它没有作用)
chifengwatch 2003-05-12
  • 打赏
  • 举报
回复
up
jianlinlong 2003-05-12
  • 打赏
  • 举报
回复
NowCan:
这段代码是在你的个人主页上面的:

<< 网上邻居列表(BCB) >>
<< 列出局域网内所有主机和共享目录(BCB) >>
jianlinlong 2003-05-12
  • 打赏
  • 举报
回复
我的调用方式:
Enumerate(NULL);

jianlinlong 2003-05-12
  • 打赏
  • 举报
回复
bool TfrmMain::Enumerate(LPNETRESOURCE lpNetRC_p)
{
//查找网上邻居的所有计算机
HANDLE hEnum = 0;
DWORD dwScope = RESOURCE_GLOBALNET ;
DWORD dwType = RESOURCETYPE_ANY ;
DWORD dwResult = WNetOpenEnum(dwScope, // scope of ation
dwType, // resource types to list
0, // enumerate all resources
lpNetRC_p, // pointer to resource ture (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;

AnsiString sComputerName;
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 (DWORD i=0; i<dwEntries; i++)
{
if (RESOURCEUSAGE_CONTAINER == (lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER) &&
lpnrLocal[i].dwDisplayType != RESOURCEDISPLAYTYPE_SERVER)
{
if (!Enumerate(&lpnrLocal[i])) {
throw Exception("在网上查找计算机失败!");
}
}else{
sComputerName = lpnrLocal[i].lpRemoteName; //计算机名
sComputerName.Delete(1, 2);
// AddListviewItem(sComputerName, lpnrLocal[i].lpComment);
}
}
}
} while (dwResult != ERROR_NO_MORE_ITEMS);
}catch(...){
bRet = false;
}
if (lpnrLocal)
GlobalFree((HGLOBAL)lpnrLocal) ;

WNetCloseEnum(hEnum) ;
return bRet;
}
内容概要:本文详细介绍了一种基于MATLAB实现的改进前推回代法,用于高效求解低压配电网的潮流计算问题。该方法针对传统前推回代法在处理放射状或弱环状配电网络时存在的收敛性差、计算效率低等缺陷,提出了多项优化策略,包括节点分层排序、支路编号优化以及合理的电压初始值设定,从而显著提升了算法的数值稳定性与运算速度。文中系统阐述了改进算法的数学模型构建过程与核心原理,并提供了完整的MATLAB代码实现流程。通过标准算例的仿真测试,验证了该改进方法在计算精度和收敛性能方面的优越性,可为低压配电网的规划、运行状态分析、电压调控及分布式电源接入能力评估等实际工程问题提供可靠的技术支撑。; 适合人群:具备电力系统分析基础知识和MATLAB编程能力的高校研究生、从事电力系统相关研究的科研人员,以及负责配电网规划、运行与优化的工程技术人员。; 使用场景及目标:①实现低压配电网的稳态潮流计算与仿真分析,获取各节点电压和支路功率分布;②支撑含分布式光伏、储能等设备接入的配电网承载力评估与电压越限风险分析;③用于研究电压调控策略、无功补偿配置等优化问题;④作为电力系统专业课程的教学案例,帮助学生深入理解潮流计算的基本原理与数值算法的编程实现。; 阅读建议:建议读者结合文中的理论推导与提供的MATLAB代码进行上机实践,重点关注节点分层逻辑和迭代收敛判据的编程实现细节,通过调试和修改算例参数来加深理解,并可尝试将该方法拓展应用于三相不平衡潮流或动态潮流计算等更复杂的场景。

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧