网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
如何Delphi中操纵拨号网络
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

用MODEM拨号上网,仍是大多数个人网民选择上网的方式.如果能在我们的应用程序中管理拨号 网络(如Foxmail、Sygate中的拨号功能),无疑将会方便我们的软件用户(不用再切换应用程序, 运行拨号网络),提高我们的软件的友好性从而提高软件的竞争力.


在WIN9X下,如果安装了拨号网络,则在WINDOWS系统的系统目录System下将有两个拨号网络管理 程序库RasApi32.DLL和RasApi16.DLL,我们可利用其中的函数来获取和设置拨号连接网络的信息。在 Delphi帮助文件中,有相关函数的说明。


在此,我们要讨论的管理项目有:

1、获取当前系统中可用的拨号连接名称

2、新建拨号连接、修改拨号连接的属性

3、获取和设置拨号连接的拨号参数

4、用指定的拨号连接拨号、挂断指定的拨号连接

5、获取当前活动的连接及其连接状态零、获取RasAPI函数执行失败的错误信息


RasAPI的调用接口是统一的,但对于不同的Windows版本,许多常量和数据结构的定义是不同的。 如果使用的数据结构与Windows版本不对应,RasAPI函数执行会失败;另外,其它原因如其它程序也 在使用同一个拨号连接进行拨号等,也会造成RasAPI函数执行失败.鉴于此原因,我们需要先讨论获 取RasAPI函数执行失败的错误信息的函数。

当一个RasAPI函数执行结束时,会返回一个结果标识,为0时表示执行成功,否则作为一个错误标 识符表示执行失败的原因。RasAPI函数RasGetErrorString可以根据错误标识符返回其错误描述信息,

在中文WIN9X下可提供一个中文错误信息.

RasGetErrorString的函数原型为:

function RasGetErrorString (

uErrorValue : UINT;//错误标识符

lpszErrorString : PChar;//错误提示信息的缓冲区

cBufSize : DWORD//错误提示信息的缓冲区大小

) : DWORD; stdcall;

function RasGetErrorString;external RasApiDll name ''RasGetErrorStringA'';

( 注:RasApiDll = ''Rasapi32.dll''; )


为了方便,我们可以自己编写一个函数,用于获取RasAPI函数执行失败的错误信息。在下面的例

子中,会经常用到该函数。函数代码如下所示:

{ 根据错误标识符,获取RasAPI函数执行失败的错误信息 }

function GetRasError( ErrorID : UINT ) : string;

var

buffer : array[ 0..255 ] of char;

begin

if 0 = RasGetErrorString( ErrorID

buffer

256 ) then

result := strpas( buffer )//如果能正确返回错误信息,则转化为Pascal字符串

else//否则返回16进制形式的错误代码

result := ''GetRasError Failure:ErrorID='' + Format( ''%x''

[ErrorID] );

end;


一、获取当前系统中可用的拨号连接名称

即获取系统中已建立的拨号连接的名称,可用来让用户选择使用哪个拨号连接进行拨号.

可以用两种方法来实现.一种是利用RasAPI函数;另一种是不用RasAPI函数,直接在注册表中查询


1、不用RasAPI函数,直接在注册表中查询

在注册表的HKEY_USERS\.Default\RemoteAccess\Addresses下,列出了已经在拨号网络中建立的拨号连接的名称及其属性设置,其中各项目的名称即为可用的拨号连接的名称;各项目的值即为各拨号连接的属性设置,不过是二进制串,笔者还看不懂.由此可见,我们只要读出各项目的名称即可获取当前系统中可用的拨号连接名称.

var

registryTemp : TRegistry;

stringsTemp : TStringlist;

begin

registryTemp := TRegistry.Create;

stringsTemp := TStringlist.Create;

with registryTemp do

begin

RootKey := HKEY_USERS;//根键设置为HKEY_USERS

//如果存在子键.Default\RemoteAccess\Addresses

if OpenKey(''.Default\RemoteAccess\Addresses''

false) then

GetValueNames( stringsTemp );//读出各项目的名称,即拨号连接名称

end;

combobox1.Items.assign( stringsTemp );//显示,供选择

end;


2、用RasAPI函数

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号