`
txf2004
  • 浏览: 6869883 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

delphi实现modem自动拨号

阅读更多

如果能在我们的应用程序中启动拨号
连接(如IE浏览器程序中的自动拨号功能),无疑将会方便我们的软件用户(不用再切换应用程序,
运行拨号网络),提高我们的软件的友好性从而提高软件的竞争力.
  在WIN9X下,如果安装了拨号网络,则在WINDOWS系统的系统目录System下将有两个拨号网络管理
程序库RasApi32.DLL和RasApi16.DLL,我们可利用其中的函数来创建、修改拨号连接,并利用指定的
拨号连接进行拨号上网。

一、新建拨号连接
  当WIN9X系统中已经建立了拨号连接,则可利用现成的拨号连接。如果没有拨号连接,则需要新建
一个拨号连接。RasAPI中提供了相应的函数,其函数名为RasCreatePhonebookEntryA,函数原型为:
function RasCreatePhonebookEntryA( hwnd : THandle;lpszPhonebook: pchar ) : DWORD;
stdcall; { 位于interface部分 }
function RasCreatePhonebookEntryA ; external 'Rasapi32.dll';{ 位于implementation部分 }
  参数:
    hwnd(THandle):新建拨号连接窗口的父窗口的句柄,可以为TForm的Handle,为NIL表示
Windows桌面(DeskTop)
    lpszPhonebook(pchar):电话本名称,在Win9X下无作用,可设为空字符串
  函数返回值:
    0表示执行成功;否则为错误.

    下面是一个新建拨号连接的例子.
{ 新建拨号连接 }
procedure TForm1.Button1Click(Sender: TObject);
var
dwResult : DWORD;
begin
//在当前窗口中新建拨号连接
dwResult := RasCreatePhonebookEntryA( handle, '' );
if dwResult = 0 then
memo1.lines.add('新建拨号连接成功!')
else
memo1.lines.add('新建拨号连接失败!')
end;

二、修改指定拨号连接的属性
  如果用户需要修改拨号连接的属性如电话号码、国家及区号、连接方式、服务器类型
等,可以用RasAPI函数来实现,其函数名为RasEditPhonebookEntryA,函数原型为:
function RasEditPhonebookEntryA( hwnd : THandle; lpszPhonebook: pchar;
lpszEntryName: pchar ) : DWORD;stdcall; { 位于interface部分 }
function RasEditPhonebookEntryA; external 'Rasapi32.dll';{ 位于implementation部分 }
  参数:
    hwnd(THandle):新建拨号连接窗口的父窗口的句柄,可以为TForm的Handle,为NIL表示
Windows桌面(DeskTop)
    lpszPhonebook(pchar):电话本名称,在Win9X下无作用,可设为空字符串
lpszEntryName:( pchar):要修改的拨号连接的名称,如'163'、'169'等
  函数返回值:
    0表示执行成功;否则为错误.

    下面是一个修改指定拨号连接属性的例子.
{ 修改指定拨号连接属性 }
procedure TForm1.Button2Click(Sender: TObject);
var
dwResult : DWORD;
strDialName : string;
begin
strDialName := '163';//拨号连接的名称设为163
//在当前窗口中指定修改拨号连接的属性
dwResult := RasEditPhonebookEntryA( handle, '', PChar( strDialName ) );
if dwResult = 0 then
memo1.lines.add('修改拨号连接' + strDialName + '成功!')
else
memo1.lines.add('修改拨号连接' + strDialName + '失败!')
end;

三、获取当前系统中可用的拨号连接名称
  为了让用户选择使用拨号连接进行拨号,我们需要获取系统中已建立的拨号连接的名称。在建立了
拨号连接后,WIN9X将拨号连接的名称和属性写在了注册表中,我们可以从注册表中获取当前系统中可
用的拨号连接名称及在Internet Explorer中设置的默认连接名称。
  在注册表的HKEY_USERS\.Default\RemoteAccess\Addresses下,列出了已经在拨号网络中建立了的
拨号连接的名称及其属性设置,其中各项目的名称即为可用的拨号连接的名称;各项目的值即为各拨号
连接的属性设置.我们只要读出各项目的名称即可获取当前系统中可用的拨号连接名称.
  如果在Internet Explorer中设置了默认连接名称(查看=》Internet选项=》连接=》连接=》
设置=》使用以下拨号网络连接),则在注册表的HKEY_USERS\.Default\RemoteAccess下,有一个字符
串类型的键值,键值名InternetProfile,其值即为Internet Explorer中设置的默认连接名称。

    下面是一个获取当前系统中可用的拨号连接名称的例子.
{ 注意在Uses中增加Registry单元,用于操作注册表 }
{ 获取当前系统中可用的拨号连接名称 }
procedure TForm1.Button3Click(Sender: TObject);
var
registryTemp : TRegistry;
stringsTemp : TStringlist;
intIndex : integer;
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 );//读出各项目的名称,即拨号连接名称
CloseKey;
end;
//当前系统中可用的拨号连接
memo1.lines.add( '******************当前系统中有'+ IntToStr( stringsTemp.count )
+'个可用的拨号连接如下****************');
for intIndex := 0 to stringsTemp.count - 1 do
memo1.lines.add( stringsTemp.strings[ intIndex ] );

//列出Internet Explorer中设置的默认连接名称
if registryTemp.OpenKey('.Default\RemoteAccess',false) then
memo1.lines.add( 'Internet Explorer中设置的默认连接名称为' +
registryTemp.ReadString('InternetProfile') );

//释放内存
registryTemp.free;
stringsTemp.free;
end;

四、用指定的拨号连接拨号
  以上的三个工作的目的就是为了拨号上网,现在就来看看如果用指定的拨号连接拨号上网。
最好的方法就是调用WIN9X的拨号网络服务了,就是运行WIN9X下的现成程序。
  在Delphi程序中可以用如下代码实现拨号上网:
  winexec('rundll32.exe rnaui.dll,RnaDial 163',SW_SHOWNORMAL);
  其中字符串中的最后一个参数“163”为拨号连接的名称。

  下面是一个用指定的拨号连接拨号上网的例子.
{ 用指定的拨号连接拨号上网 }
procedure TForm1.Button4Click(Sender: TObject);
var
strDialName : string;
begin
strDialName := '163';//拨号连接的名称设为163
memo1.lines.add( '******************用拨号连接'+ strDialName
+'实现拨号上网****************');
winexec( PChar('rundll32.exe rnaui.dll,RnaDial ' + strDialName),SW_SHOWNORMAL);

========================================================================

拨号完了,获取新的ip地址了。你想干什么?哈哈。。。自由发挥吧

分享到:
评论

相关推荐

    Delphi下载测试,Modem配置实例

    摘要:Delphi源码,网络相关,网络传真  APRO相关的Delphi程序,Delphi下载测试,Modem配置实例,与传真网络相关的Delphi编程实例,运行截图如上所示,可以进行重拨时间设置、拨号方式选择、还有一些辅助的配置选项...

    Delphi编程大师2003 4of5

    QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR ...

    Delphi编程大师2003 2of5

    QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR ...

    Delphi编程大师2003 1of5

    QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR ...

    Delphi编程大师2003 5of5

    QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR ...

    Delphi编程大师2003 3of5

    QuickReport实现自动分行显示的补丁 能够拦截系统内键盘输入信息的Hook构件 能够精简HTML文件的控件 可以处理XML的TQuickRTTI控件 制作 Microsoft ISAPI Extention 应用程序的构件 控制ISDN拨号的控件 AGHOTKEYMGR ...

    Delphi网络通信协议分析与应用实现pdf清晰

    第1章 Delphi网络编程基础知识 1.1 TCP/IP 1.1.1 TCP/IP结构 1.1.2 应用层协议 1.1.3 传输层协议 1.1.4 网络层协议 1.1.5 RFC和标准简单服务 1.2 TCP/IP基本概念 1.2.1 IP地址 1.2.2 地址解析 1.2.3 域名...

    Delphi网络通信协议分析与应用实现

    本书介绍如何利用Delphi开发网络与通信应用程序,本书主要针对目前流行的FTP、HTTP、E-mail、Telnet、网络监控、Modem串口通信编程、拨号网络编程、传真编程等Internet协议与网络通信高级编程开发进行详细的讲解,并...

    delphi网络应用

    所有代码在delphi6.0中调试通过。1.GetIP(获取IP地址程序)-GetHostByName(使用GetHostByName函数获取IP程序)-WSAAsyncGetHostByName(使用...server(Modem文件传输的服务器程序)21.RAS-Code(RAS拨号上网程序)

    Delphi串口及语音传真高级编程随书光盘

    提供APF打印驱动环境,转换文件为传真文件格式、拨号控件、终端控件、FTP控件等,可以实现呼叫中心、Fax系统,实现语音E-mail更简单,为GSM提供SMS服务等。  虽然如此.结合我国电信标准和Modem硬件的实际情况,还是...

    Delphi串口及语音传真高级编程.(北航出版.温锦山.唐柱鹏)

     2.1.2 delphi下的具体实现方法  2.2 mscomm32控件  2.2.1 用mscomm32.ocx代替繁琐的api函数调用  2.2.2 mscomm控件的安装  2.2.3 mscomm的主要属性和事件  2.2.4 mscomm32的使用例子 ...

    Delphi高级实验实践(RAS_传真_telnet_API_FTP)

    1.1、GetIP(获取IP地址程序)...client(Modem文件传输的客户端程序) 8.2、Modem-server(Modem文件传输的服务器程序) 9.1、RAS-Code(RAS拨号上网程序) 10.1、tfax(通过计算机发送传真的程序) <br>

    Delphi网络通信协议分析与应用实现附书源码

    本书介绍如何利用Delphi开发网络与通信应用程序,本书主要针对目前流行的FTP、HTTP、E-mail、Telnet、网络监控、Modem串口通信编程、拨号网络编程、传真编程等Internet协议与网络通信高级编程开发进行详细的讲解,并...

    爱特生彩信开发控件

    爱特生短信彩信控件,使用特有的内嵌拨号技术,使在收发彩信时不需要在操作系统中建立拨号连接,从而避免了使用时与电脑上的其他网络软件发生冲突的可能性,因此大大提高了开发系统的环境独立性和可靠性。...

    vc++ 应用源码包_1

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_2

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_6

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_5

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 应用源码包_3

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

    vc++ 开发实例源码包

    实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...

Global site tag (gtag.js) - Google Analytics