社区
Windows SDK/API
帖子详情
如何用Delphi关闭本地网络连接?系统不允许给超过100的分要不我给300分
UnKnow365
2002-11-05 04:03:27
Win2K网络和拨号连接里有一个本地连接,鼠标右击时出现一个菜单,第一项是禁用,执行后再点右击禁用变启用。请问如何用Delphi实现如上功能?
谢!
...全文
223
1
打赏
收藏
如何用Delphi关闭本地网络连接?系统不允许给超过100的分要不我给300分
Win2K网络和拨号连接里有一个本地连接,鼠标右击时出现一个菜单,第一项是禁用,执行后再点右击禁用变启用。请问如何用Delphi实现如上功能? 谢!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
starcbh
2002-11-06
打赏
举报
回复
转贴
一.问题提出:
每当你通过windows95或windows98访问"网上邻居"时,系统自动的建立了两
台机器之间的网络连接关系,但是在访问结束后,并不自动的断开网络连接,
所以有时我们关闭windows系统时,会弹出一个对话框,询问是否关闭网络连
接,在回答"yes"后,才真正开始关闭计算机.
程序员编制系统关闭程序时,就需要考虑这种情况,虽然sdk提供了关机的api:
exitwindowsex()和exitwindows(),但实际应用中我发现,在指定force关机时
在特定情况下会出问题.所以,必须想办法首先断开网络连接.
二.编程接口:
windows95及windows98提供的这方面的网络编程接口在svrapi.dll中,利用它
我们可以列举出当前网络连接状态,控制或删除网络连接.windows附件中的
netwatch.exe工具就是这样实现的.
也许您会问,netapi的详细说明在开发工具的sdk文档中很详细了,没有必要在
此演示.但是,在查寻了很多资料后,我不得不说:msdn中有关netapi的部分说
明是错误的,至少是不完整而且含混不清的,可以说,依靠这些文档,你不能实
现全部的功能!下面的代码是本人自己分析得来,使用后,您会发现正确的应用
和文档说明有多么大的差距.
三.api声明:
关闭网络连接的实现方法分两步: 枚举出当前所有的网络连接状况; 依次
断开枚举出的网络连接.
1.枚举出当前所有的网络连接状况:
依照开发帮助文档,这个api是这样的:
net_api_status netsessionenum(
lpwstr servername,
lpwstr uncclientname,
lpwstr username,
dword level,
lpbyte *bufptr,
dword prefmaxlen,
lpdword entriesread,
lpdword totalentries,
lpdword resume_handle
);
但是,实际情况是,在windows95和windows98平台下,
这样调用根本就无法连接上库文件.真正的api声明应该是:
dword netsessionenum( lpstr,
dword,
lpbyte,
dword,
lpdword,
lpdword )
参数1: null表示枚举本机的网络连接
参数2: 不详.在枚举中是常量0x32.
参数3: 存放信息的缓冲区指针
参数4: 缓冲区长度
参数5: 指向返回连接个数
参数6: 指向总共连接个数
可见,参数个数完全不同,另外参数意义也发生了变化.
2.依次断开枚举出的网络连接:
还算幸运的是,断开网络连接的api声明是正确的:
net_api_status netsessiondel(
lpwstr servername,
lpwstr uncclientname,
lpwstr username );
不过要注意的是,第2个和第3个参数的内容需要
从枚举得到的缓冲区中去取.具体方法参见程序.
四.源代码:
以下是实现断开网络连接的子程序,你可以方便的把它们加入到自己的项目中
去,而不用和我一样浪费时间去研究到底怎样实现网络枚举了.
注:由于本程序只实际用到了一个svrapi.dll中的函数声明,简便期间,我没有
用原有的头文件,自己定义一下就可以了.
///////////////////////////////////////////////////////////////////
// file: netclose.h
// version: 1.01
#define netbuff_size 0x208
#define netsessionenum_profile ( dword (__stdcall *) ( lpstr, dword, lpbyte, dword, lpdword, lpdword ) )
#define netsessiondel_profile ( dword (__stdcall *) ( lpstr, lpstr, dword ) )
///////////////////////////////////////////////////////////////////
// file: netclose.cpp
// version: 1.01
///////////////////////////////////////////////////////////////////
// define: bool netcloseall( void )
// parameters: none
// return: true or false
//
// author: mr.huang fei
// time: 5/7/1998
// note: can only be used on windows95 & windows98
// remark: close all network connections
///////////////////////////////////////////////////////////////////
bool netcloseall( void )
{
byte bybuff[netbuff_size];
dword dwnetret = 0;;
dword i = 0;
dword dwentries = 0;
dword dwtotalentries = 0;
lpstr szclient = null;
dword dwusername = 0;
bool bret = false;
lpbyte lpbybuff = (lpbyte)bybuff;
dword (__stdcall * hooknetsessionenum)( lpstr, dword, lpbyte, dword, lpdword, lpdword );
dword (__stdcall * hooknetsessiondel)( lpstr, lpstr, dword );
hinstance hmod = loadlibrary( "svrapi.dll" );
if( hmod != null )
{
// get the address of function
hooknetsessionenum = netsessionenum_profile
getprocaddress
( hmod, text("netsessionenum") );
hooknetsessiondel = netsessiondel_profile
getprocaddress
( hmod, text("netsessiondel") );
if( ( hooknetsessiondel != null ) &&
( hooknetsessionenum != null ) )
{
dwnetret = hooknetsessionenum( null,
0x32, bybuff,
netbuff_size, &dwentries,
&dwtotalentries );
if( dwnetret == 0 )
{
bret = true;
for( i=0; i < dwtotalentries; i++ )
{
szclient = (lpstr)(((dword *)
lpbybuff)[0]);
dwusername = ((dword *)lpbybuff)[2];
dwnetret = hooknetsessiondel( null,
szclient, dwusername );
if( dwnetret != 0 )
{
bret = false;
break;
}
lpbybuff += 26;
}
} // netsessionenum(...)
else
bret = false;
} // getprocaddress(...)
else
bret = false;
freelibrary( hmod );
} // loadlibrary(...)
return bret;
CDN静态资源交付优化:从URL替换到缓存头治理的全链路实践
本文
系统
阐述CDN在静态资源交付中的核心作用,强调其不仅是URL替换,而是涵盖地理调度、边缘缓存、HTTP/2与Brotli压缩、Cache-Control响应头治理、CORS配置及缓存
分
级策略的全链路工程。重点解析域名规划(static.yourdomain.com)、TTL
分
级设置、源站响应头与CDN策略协同、双CDN架构(七牛云+Cloudflare)落地实践,并通过WebPageTest/Lighthouse压测验证首屏时间提升70%以上。同时指出缓存雪崩、图标异常、跨域失败等高频问题的根因与排查方法。
青铜器研发管理软件RDM-IPD+CMMI+Scrum研发管理方案
打开链接下载源码: https://pan.quark.cn/s/3cbff723e92c 集成化的青铜器研发管理软件RDM_IPD+CMMI+Scrum研发管理平台, 1、IPD保障方向的准确性,注重市场引导、投资效益,将市场信息、财务状况、竞争态势、技术发展有效整合; 2、CMMI注重标准化、精细化运作,将IPD的方针转化为明确的方案、流程、制度、范本、监控手段; 3、Scrum基于敏捷迭代的思路,将项目全局目标,
分
解为短期内可达成的工作目标,适应市场迅速变化、高效交付的需求。
交直流混合微电网互联变换器归一化下垂控制的内在机理:频率-电压耦合特性、功率再
分
配边界与孤岛多扰动响应规律(Simulink仿真实现)
内容概要:本文
系统
研究了交直流混合微电网中互联变换器采用的归一化下垂控制策略的内在机理,深入剖析了
系统
中存在的频率与电压耦合特性、功率再
分
配的边界条件,以及在孤岛运行模式下遭遇多重扰动时的动态响应规律。通过构建Simulink仿真模型,全面验证了该控制策略在实现交直流子
系统
间功率精确协调
分
配、维持
系统
频率与母线电压稳定方面的有效性。研究不仅揭示了不同运行工况和扰动场景下
系统
的动态特性与恢复能力,还重点探讨了控制参数对
系统
鲁棒性和稳定性的关键影响,阐明了归一化下垂控制在提升微电网自治运行能力和应对复杂工况方面的核心作用与技术优势。; 适合人群:具备电力
系统
、微电网或电力电子等相关专业背景,从事新能源并网、
分
布式能源
系统
控制、智能电网技术研发工作的工程师、研究人员及高校相关专业的研究生。; 使用场景及目标:①深入理解交直流混合微电网中互联变换器的协同控制原理与功率平衡机制;②掌握归一化下垂控制策略的设计方法、参数整定原则及其对
系统
小信号与大信号稳定性的影响;③学习并实践利用Simulink进行复杂微电网
系统
的动态建模、多工况仿真与多扰动响应
分
析,为新型微电网控制器的设计、优化与工程应用提供坚实的理论依据和技术支持。; 阅读建议:此资源强调理论
分
析与仿真实践的高度结合,读者应在透彻理解控制理论与
系统
建模原理的基础上,亲自动手复现文中的Simulink仿真模型,通过调整控制参数、设置不同的负载投切与故障扰动场景,深入探究控制策略的动态响应过程、稳定边界与鲁棒性表现,从而获得深刻的认知。
ABB伺服调试软件Mint WorkBench 5874安装包.zip
ABB伺服调试软件Mint WorkBench 5874安装包.zip
【Python编程】Python数据库操作与ORM框架对比
内容概要:本文
系统
对比Python数据库访问的技术方案,重点
分
析DB-API 2.0规范、SQLAlchemy ORM、Django ORM、Peewee在抽象层次、查询能力、迁移支持上的差异。文章从连接池(connection pool)原理出发,详解SQLAlchemy的Core层表达式语言与ORM层声明式基类的协作模式、关系(relationship)的懒加载(lazy)与急加载(eager)策略、以及事务隔离级别的配置与死锁规避。通过代码示例展示Alembic数据库迁移脚本的版本控制、raw SQL与ORM查询的混合使用、以及连接池大小(pool_size/max_overflow)的调优,同时介绍异步ORM(Tortoise-ORM/GINO)在asyncio生态中的适配、NoSQL(pymongo/redis-py)的非关系型操作,最后给出在微服务架构、报表
系统
、实时
分
析等场景下的数据库选型与查询优化建议。 ysvssll.gzhyjsgc.com nksvs76r.gzhyjsgc.com kaierte-vs-huosai.jnmama.net 76ren-vs-nikesi.jnmama.net leiting-vs-maci.jnmama.net
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章