如何用VB调用rasDial进行拨号

zhangdr 2000-03-14 04:48:00
下面是我用VB编的一段小程序,用来远程拨号,运行以后,iErrCode的值总为610,期待高手为我解难。
Public Type RASDIALEXTENSIONS
dwSize As Long
dwfOptions As Long
hwndParent As Long
reserved As Long
End Type

Public Type RASDIALPARAMS
dwSize As Long
szEntryName As String * RAS95_MaxEntryName
szPhoneNumber As String * RAS_MaxPhoneNumber
szCallbackNumber As String * RAS_MaxCallbackNumber
szUserName As String * UNLEN
szPassword As String * PWLEN
szDomain As String * DNLEN
' dwSubEntry As Long
' dwCallbackId As Long
End Type

Public Declare Function RasDial Lib "RasApi32.dll" Alias "RasDialA" (lpRasDialExtensions As RASDIALEXTENSIONS, ByVal lpszPhonebook As String, lpRasDialParams As RASDIALPARAMS, ByVal dwNotifierType As Long, ByVal lpvNotifier As Any, lphRasConn As Long) As Long

Sub Dial()
Dim lpRasDialExtensions As RASDIALEXTENSIONS
Dim lpRasDialParams As RASDIALPARAMS
Dim hRasConn As Long

lpRasDialExtensions.dwSize = Len(lpRasDialExtensions)
With lpRasDialParams
.dwSize = Len(lpRasDialParams)
.szPhoneNumber = "02 3712357"
.szUserName = "yl_zheng"
.szPassword = "1234"
End With
Dim iErrCode As Long, sErrString As String
iErrCode = RasDial(lpRasDialExtensions, "", lpRasDialParams, 0, AddressOf RasDialFunc, hRasConn)
end Sub

'回调函数
Public Sub RasDialFunc(ByVal unMsg As Integer, lpRasConnState As RASCONNSTATE, ByVal dwError As Long)
Debug.Print unMsg
End Sub
...全文
339 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-03-15
  • 打赏
  • 举报
回复
由于Windows的一部分Callback函数使用其他线程,如果在VB中直接使用这些变量访问,则可能会导致非法操作。为了避免大量的线程管道等编程解决的办法是使用Windows的消息Callback处理。
zhangdr 2000-03-15
  • 打赏
  • 举报
回复
用CallBack回调函数,使我有可能获得当前拨号的状态,但我在这个函数内加代码时,就会出现“非法操作”的系统错误。如果用CallBack消息,我不知如何查询当前拨号的状态,请指教。(回调函数代码如下,如不加Select ... End Select语句,不会出现系统错误,不知是何原因)
'回调函数
Public Sub RasDialFunc(ByVal unMsg As Integer, lpRasConnState As Integer, ByVal dwError As Long)
Select Case lpRasConnState
Case RASCS_LogonNetwork
Debug.Print "正在登录网络"
Case RASCS_Authenticated
Debug.Print "正在验证用户名与口令"
Case RASCS_Connected
Debug.Print "已连接"
Case Else
Debug.Print "Other Message"
End Select
'Debug.Print lpRasConnState
End Sub
Un1 2000-03-14
  • 打赏
  • 举报
回复
注意dwSize, EntryName 的设置,另外最好VB中不要使用CallBack函数,应使用CallBack消息。
参见:
http://www.midatech.com/csdn/expert/TopicView.asp?id=1954

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧