-
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中运行成功。
有一次在用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中运行成功。
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式