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地址了。你想干什么?哈哈。。。自由发挥吧

时间: 2024-10-03 12:32:49

delphi实现modem自动拨号的相关文章

无线路由无法自动拨号的解决方法

在使用无线路由器进行宽带拨号上网时,我们或许常常会遭遇到该设备无法自动进行拨号的奇怪现象,遇到这种现象时,我们可以从以下几个方面进行排查: 一.陆由器兼容性问题 确认一下自己使用的无线路由器是否得到了当地电信部门的入网许可,要是该设备根本就没有得到过电信入网许可的话,那么无线路由器通过当地电信部门提供的线路进行拨号操作时,就容易出现无法自动拨号的现象了.例如,某无线路由器可能在南方能够正常使用,但到了北方后就可能不正常,要想解决这种不兼容现象,一般需要对无线路由器内部的相关固件进行专门升级,才能

如何解决无线路由器无法自动拨号的故障

在使用无线路由器进行宽带拨号上网时,我们或许常常会遭遇到该设备无法自动进行拨号的奇怪现象,遇到这种现象时,我们可以从以下几个方面进行排查: 一.陆由器兼容性问题 确认一下自己使用的无线路由器是否得到了当地电信部门的入网许可,要是该设备根本就没有得到过电信入网许可的话,那么无线路由器通过当地电信部门提供的线路进行拨号操作时,就容易出现无法自动拨号的现象了.例如,某无线路由器可能在南方能够正常使用,但到了北方后就可能不正常,要想解决这种不兼容现象,一般需要对无线路由器内部的相关固件进行专门升级,才能

windows8设置开机自动拨号

1.在 Metro 或传统桌面下,按键盘的"Win+X"组合热键调出快捷菜单,使用鼠标左键单击"计算机管理(G)".如下图画面所示: 2.在弹出的计算机管理窗口,使用鼠标左键单击左侧的"任务计划程序"使其为选中状态,然后再点击鼠标右键弹出菜单并选择"创建基本任务(B)-".如下图画面所示: 电脑常识 3.在弹出的创建基本任务向导对话框中,在下图标注"1"处键入任务名称如:ADSL 自动拨号,然后点击标注&q

WinCE下GPRS自动拨号软件(GPRS AutoDial)

之前在WinCE下调试USB的3G Modem时,写过一个拨号助手RASManager,基本能用.后来车机卖到俄罗斯去,客户老M提供了一个更好的GPRS自动拨号软件GPRS AutoDial,功能完善且强大,RASManager基本就废弃了. GPRS AutoDial的使用方法如下图所示. GPRS AutoDial v1.4.3下载地址,http://files.cnblogs.com/files/we-hjb/GPRS_AD_1.4.3.rar

D-LINK路由如何实现自动拨号和自动断线

通过多台计算机一起利用一个宽带网络帐号访问网络是普通用户最常采用的方法,关于共享上网的搭建步骤这里不就详细说明了,这里有很多这方面的文章,还不了解的读者可以查看这些内容. 建立了自己的共享上网之后问题也接踵而来,就象本文那位朋友的疑问一样,他想实现每次启动计算机都能自动连接网络的功能,而不是每次连网必须先进入路由器界面点联机才能上网,不想上网时必须点断线.实际上这种自动断网和自动连接网络的功能是非常好实现的,如果没有宽带路由器可以通过把拨号程序放到windows系统的启动项中来实现:当然本文开头

设置路由器自动拨号的方法

通过多台计算机一起利用一个宽带网络帐号访问网络是普通用户最常采用的方法,关于共享上网的搭建步骤这里不就详细说明了,这里有很多这方面的文章,还不了解的读者可以查看这些内容. 建立了自己的共享上网之后问题也接踵而来,就象本文那位朋友的疑问一样,他想实现每次启动计算机都能自动连接网络的功能,而不是每次连网必须先进入路由器界面点联机才能上网,不想上网时必须点断线.实际上这种自动断网和自动连接网络的功能是非常好实现的,如果没有宽带路由器可以通过把拨号程序放到windows系统的启动项中来实现:当然本文开头

路由器怎么设置自动拨号上网?

  随着互联网宽带的发展以及移动设备的普及,现在无线路由器都是每个家庭的基本配置之一.由于路由器成为一个常用工具,就应该把它的功能发挥尽致.其中自动拔号上网就是重要的.常用的功能之一.那么路由器怎么设置自动拨号上网?下面小编就为大家介绍一下! 方法/步骤 以前使用ADSL宽带需要拨号上网,如今一些小区光纤宽带依然需要拨号.那么是否能将拨号的任务交由路由器完成呢?当然可以,首先使用路由器的IP地址(路由器的背面有提示)在浏览器的地址栏中输入,并按回车打开路由器的设置. 然后,使用用户名.密码登录(

如何在Vista下设置拨号器自动拨号上网

还在使用互联星空拨号的朋友请注意了,WindowsVista下怎么设置拨号器自动拨号上网,特别罗列步骤如下: (1)win+r输入regedit进入注册表: (2)依次打开打开HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVesion,修改 InternetSettings子健下的右击修改NoNetAutodial,将其数值修改为01000000.(注意0的个数哦)! 如果上述方法不奏效,你又想使用互联星空,那就破费买个路由好了!绝对可以用的!笔

如何设置路由器自动拨号连接上网

如何路由器设置自动拨号上网是普通用户利用一个宽带网络帐号实现多台计算机一起访问网络最常采用的方法,那么如何搭建共享上网的环境呢?下面我们来详细看看具体的内容. 建立了自己的共享上网之后问题也接踵而来,用户想实现每次启动计算机都能自动连接网络的功能,而不是每次连网必须先进入路由器界面点联机才能上网,不想上网时必须点断线.实际上这种自动断网和自动连接网络的功能是非常好实现的,如果没有宽带路由器可以通过把拨号程序放到windows系统的启动项中来实现;如果是在购买了自己的D-LINK路由器后寻求解决方