-
c语言入门之用BCB编程实现挂断拨号网络功能
河北 张利辉
有一次在用BCB开发程序的过程时,客户要求实现在结束Internet事务(传输文件等)后自动挂断拨号网络的功能,以提高软件的自动化程度。首先想到的方法是使用Windows API实现该功能,但是查遍WIN32 API并没有发现相应的函数。在查阅资料之后终于找到了一种解决的方法,为了给同行以帮助,特将此方法介绍给大家。
我是使用RAS API来完成这个功能的。使用它需要三个条件:1.计算机中应当安装好拨号网络,此时的Window\system目录下将会存在动态链接库RasApi32.dll,这是实现本功能的前提条件;2.源程序中应当有预编译指令#include ″ras.h″;3.存在库文件RasApi32.lib。
我的方法中用到了RAS API中提供的两个函数RasHangUp()和RasEnumConnections(),它们的原型和功能如下:
DWORD RasHangUp(HRASCONN hrasconn),此函数的功能是关闭拨号网络,返回值是0时表示调用成功。它的参数是RAS句柄,该句柄的获得可以通过下面的函数。
DWORD RasEnumConnections(LPRASCONN lprasconn, LPDWORD lpcb, LPDWORD lpcConnections),这个函数可以获得所有连接的数据。它的三个参数都是指针,第一个指向存放连接数据的缓冲区,该缓冲区由RASCONN结构数组组成。RASCONN结构的成员hrasconn保存了RasHangUp()所需的RAS句柄;第二个参数指向存放缓冲器字节数的变量;第三个参数指向的变量存放了连接的数目。当函数返回值是0时表示调用成功。
实现挂断拨号网络功能的函数如下:
bool CloseRas()
{bool bReturn= false;
RASCONN ras[20];
DWORD dSize, dNumber, dCount;
//函数RasEnumConnections()的要求
ras[0].dwSize=sizeof(RASCONN);
dSize =sizeof(ras);
if (RasEnumConnections(ras, &dSize, &dNumber)==0)
{bReturn=true;
//依次关闭所有的连接
for (dCount=0; dCount<dNumber; dCount++ )
{if (RasHangUp(ras[dCount].hrasconn)!=0)
{bReturn=false;
break;
}}}
return bReturn;
}
将它加入到程序中适当的位置就可以实现自动挂断拨号网络的功能了,本函数在Windows 98、Borland C++ Builder 5.0中运行成功。
栏目列表
最新更新
C#基于接口设计三层架构Unity篇
C#线程 入门
C#读取静态类常量属性和值
C# 插件式编程
C# 委托与事件有啥区别?
C#队列学习笔记:队列(Queue)和堆栈(Stack
linq 多表分组左连接查询查询统计
C#队列学习笔记:MSMQ入门一
C# 基础知识系列- 1 数据类型
二、C#入门—基础语法
C# 在Word中添加Latex 数学公式和符号
inncheck命令 – 检查语法
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
SqlServer 利用游标批量更新数据
BOS只读状态修改
SQL Server等待事件—PAGEIOLATCH_EX
数据库多行转换为单一列
获取数据表最后最后访问,修改,更新,
计算经历的时间
SQL查询结果自定义排序
修改数据库默认位置
日期简单加或减
从日期获取年,月或日