手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

利用RAS调用在VB6.0中实现拨号上网

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  我们常用的软件如:JETCAR(现在为FLASHGET),GO!ZILLA等都具有拨号上网功能。那么,如何在自己编写的应用程序中也实现上述的功能呢?本文就利用RAS调用介绍在自己编写的应用程序如何实现拨号上网。

  一.与拨号网络有关的结构和函数

  1.RASDIALPARAMS95结构.其定义如下:

Public Type RASDIALPARAMS95
 dwSize As Long
 szEntryName(RAS95_MaxEntryName) As Byte
 szPhoneNumber(RAS95_MaxPhoneNumber) As Byte
 szCallbackNumber(RAS95_MaxCallbackNumber) As Byte
 szUserName(UNLEN) As Byte
 szPassword(PWLEN) As Byte
 szDomain(DNLEN) As Byte
End Type
  其中,dwSize表示该结构的大小(以字节为单位)。szEntryName表示一个远程访问的入口名,也就是WINDOWS下的拨号网络中的连接图标小的文字;szEntryName参数可是是空串,表示仅与第一个有效的MODEM建立远程连接。szPhoneNumber为表示呼叫的号码。当szEntryName是空时,zPhoneNumber不能为空。szCallbackNumber表示回叫号码,一般都设为空。szUserName为建立远程访问的用户名。szPassword为建立远程访问的密码。szDomain为进行远程访问用户名和密码认证的域名。我们将szDomain设为空,表示远程访问的服务器也是该域名下的成员。

  2.RASDIAL函数.其API声明为:

Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long
  RASDIAL函数用于建立RAS客户机和RAS服务器的连接。

  各参数解释如下:

   lpRasDialExtensions参数在WINDOWS95/98下被忽略。

   lpszPhonebook参数在WINDOWS95/98下也被忽略。

   lprasdialparams参数是指向一个含有RAS连接参数值的RASDIALPARAMS结构变量。

  dwNotifierType参数用于指出参数lpvNotifier的性质。若lpvNotifier 为NULL,则dwNotifierType的值被忽略;若lpvNotifier不为NULL,则dwNotifierType应该为下列值之一:

  (1).0XFFFFFFFF------指出lpvNotifier参数是一个接收进程通知消息的窗口句柄;

  (2).0----------------指出lpvNotifier指向一个RASDIALFUNC回调函数;

  (3).1----------------指出lpvNotifier指向下一个RASDIALFUNC1回调函数。

  lpvNotifier参数用于指向一个接收RASDIAL事件通知的窗口或者回调函数,其性质由dwNotifierType参数决定:

  (1).若lpvNotifier不NULL,表示是异步通信。即RASDIAL会对每个事件发送一个窗口消息或者调用回调函数。RASDIAL函数会立即返回,它通过窗口或者调用回调函数建立连接,与进程通信。

  (2).若lpvNotifier是NULL,表示同步通信。即RASDIAL函数在连接建立完成或者失败后才会返回。

  lphRasConn参数指向HRASCONN变量,必须先将lphRasConn设置为NULL,然后再调用RASDIAL函数。如果RASDIAL函数调用成功,lphRasconn会放置一个RAS连接句柄。

  3.RASHANGUP函数.其API声明为:

Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
  RASHANGUP函数用于断开一个RAS连接。其参数hRasConn为指向一个RAS连接的句柄。

  二.用VB6.0实现RAS拨号上网过程。

  新建一个工程,取名为RasDial;然后在该工程中加入如下项目:

  1.新建一个窗体Form1,然后在该窗体中加入如下组件:


   ("连接"按钮取名为Ras_Dial,"挂断"按钮取名为:Ras_HangUp,"退出"按钮取名为:"Cancel".

   3个文本框分别取名为:PhoneNumber,UserName,PassWord.)
156
  2.双击连接按钮,加入如下代码:

Private Sub Ras_Dial_Click()
Dim temp As Long
If PhoneNumber.Text = "" Or UserName.Text = "" Or PassWord.Text = "" Then
temp = MsgBox("您没有输入有效的拨号网络参数。", vbOKOnly, "错误")
Exit Sub
End If
temp = AddConnection("", PhoneNumber.Text, "", UserName.Text, PassWord.Text, "")
Select Case temp
Case ERROR_PORT_ALREADY_OPEN: temp = MsgBox("错误,端口已经打开!", vbOKOnly, "Error")
Case ERROR_UNKNOWN: temp = MsgBox("未知的错误!", vbOKOnly, "Error")
Case ERROR_REQUEST_TIMEOUT: temp = MsgBox("错误,请求超时!", vbOKOnly, "Error")
Case ERROR_PASSWD_EXPIRED: temp = MsgBox("错误,您没有输入密码!", vbOKOnly, "Error")
Case ERROR_NO_DIALIN_PERMISSION: temp = MsgBox("错误,没有拨号音!", vbOKOnly, "Error")
Case ERROR_SERVER_NOT_RESPONDING: temp = MsgBox("错误,拨入的远程计算机没有响应!", vbOKOnly, "Error")
Case ERROR_UNRECOGNIZED_RESPONSE: temp = MsgBox("错误,未知的响应!", vbOKOnly, "Error")
Case ERROR_NO_RESPONSES: temp = MsgBox("错误,没有响应!", vbOKOnly, "Error")
Case ERROR_DEVICE_NOT_READY: temp = MsgBox("错误,设备没有准备好!", vbOKOnly, "Error")

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!