1,488
社区成员
发帖
与我相关
我的任务
分享
Public Function rasDialUp(sLinkName As String, sDIP As String, sUserName As String, sPassWord As String) As Boolean
Dim rasEiffo As RasEapInfo, rasEx As RASDIALEXTENSIONS, rasDialP As RASDIALPARAMS
Dim ret As Long
With rasEx
.dwSize = LenB(rasEx)
.dwfOptions = RDEOPT_PausedStates
.hwndParent = 0
.RasEapInfo = rasEiffo
.reserved = 0
.reserved1 = 0
End With
Dim len5 As Long, i As Long
len5 = LenB(rasDialP)
i = (4 - (len5 Mod 4)) Mod 4
With rasDialP
.dwSize = LenB(rasDialP) ' 1052
'.dwSize = len5 + i '1052'好奇怪的,不懂为什么要这样
CopyMemory .szPhoneNumber(0), ByVal sDIP, Len(sDIP)
CopyMemory .szUserName(0), ByVal sUserName, Len(sUserName)
CopyMemory .szPassword(0), ByVal sPassWord, Len(sPassWord)
CopyMemory .szEntryName(0), ByVal sLinkName, Len(sLinkName)
End With
frmDialState.Show‘这个是一个显示拨号进程的窗体,模拟xp那个样子的
'用回调函数
lphRasConn = 0
ret = RasDial(rasEx, vbNullString, rasDialP, 0, AddressOf RasDialFunc, lphRasConn)’异步拨号
'MsgBox RasDial(rasEx, vbNullString, rasDialP, 0&, 0&, lphRasConn)‘同步
End Function
Public Sub RasDialFunc(ByVal unMsg As Long, ByVal ConnState As Long, ByVal dwError As Long)
Dim s As String
s = getRasConningInfo(ConnState)
Select Case ConnState
Case 0 To 23
frmDialState.Label1.Caption = s
form1.Print ConnState Mod 3
frmDialState.Caption = "正在拨号" & Choose((ConnState Mod 3), ".", "..", "...")
Case RASCS_PAUSED To RASCS_PAUSED + 3
frmDialState.Label1.Caption = s
frmDialState.Caption = "正处于暂停状态"
Case RASCS_DONE '连接成功
frmDialState.Caption = "拨号成功"
frmDialState.Label1.Caption = s
'显示托盘消息
TrayAddIcon form1.ImageList1.ListImages(3).Picture.Handle
TrayPopUpInfo NIIF_INFO, "互连通", "互连通已经成功连接上高速网络" & vbCrLf & "你可以安冲浪了!", 8
Case RASCS_DONE + 1 '连接失败
frmDialState.Caption = "拨号失败"
frmDialState.Label1.Caption = s
'显示托盘消息
TrayAddIcon form1.ImageList1.ListImages(4).Picture.Handle
TrayPopUpInfo NIIF_INFO, "互连通", "拨号失败!错误码:" & dwError, 8
End Select
End Sub
'获得状态中文说明
Public Function getRasConningInfo(ByVal rasState As RASConnState) As String
Dim sState() As String, s$
s = "即将打开一个通信端口,通信端口已打开,准备与一个连接,已经成功连接设备,物理连接已建立,RAS身份验证进程已开始,运行身份验证事件已发生,运行服务器已请求尝试另一个身份验证,运行服务器已请求一个回拨号码,运行客户机已请求改变 RAS 账号上的密码,运行协议发送准备进行,链接速度正在计算过程中,身份验证据请求正在确认过程中,回拨之后的身份验证进程准备开始,客户机已成功结束身份验证,线路即将取消连接,准备回拨,准备回拨之前,客户机等待Modem的重新设置,客户机等待服务器发出的接入拨号,协议发送已完成,用户身份验证已开始或已完成,已经回拨客户机,客户机正在登录远程网络,多链路电话簿条目的子条目已接入?RasDialFunc2的dwSubEntry参数中将包括一个已连接子条目的索引,多链路电话簿条目已取消连接?RasDialFunc2的dwSubEntry参数中将包含这个已取消连接的子条目的索引,RASCS_Interactive,RasDial正在等待新的用户凭据,RasDial正在等待客户机的回拨号码,RasDial希望用户提供一个新密码,RAS连接成功,处于活动状态,RAS连接失败或处于不活动状态"
sState = Split(s, ",")
If rasState >= RASCS_PAUSED Then
If rasState >= RASCS_DONE Then
rasState = rasState - RASCS_DONE + 28
Else
rasState = rasState - RASCS_PAUSED + 24
End If
End If
getRasConningInfo = sState(rasState)
End Function