---- 在介紹之前讓我們首先看看如何打開撥號網絡。由于撥號網絡不是一個可執行文件,所以不能用 “Shell 可執行文件”的方式來打開。要啟動撥號網絡,需借助 Explorer ,方法如下:
Shell "Explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\" & "::{992CFFA0-F557-101A-88EC-00DD010CCC48}", vbNormalFocus
---- 但若是要啟動撥號網絡中的某一個連接,則需借助rundll.exe 及 rnaui.dll來啟動,方法如下(假定連接名稱為163):
Shell "rundll rnaui.dll,RnaDial 163", vbNormalFocus
---- 說明:在以上敘述中,“,RnaDial 163”這部分不要插入額外的空格,大小寫也不要任意更改。
---- 上面僅僅假定了連接名稱,但實際編程中我們是不知道其名稱的,如何取得默認的連接名稱并啟動它呢?這里我們可利用注冊表來達到目的。完整程序如下:
---- 在窗體上放置一個命令按鈕(名稱為 cmdCallConnect),下面為代碼部份:
Option Explicit
注釋:有關注冊的API聲明
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
注釋:常數
Const HKEY_CURRENT_USER = &H80000001
Const ERROR_SUCCESS = 0&
Private Sub cmdCallConnect_Click()
注釋:啟動默認撥號連接
Shell "rundll rnaui.dll,RnaDial " + GetConnect, vbNormalFocus
End Sub
Public Function GetConnect() As String
Dim hKey As Long
Dim SubKey As String
hKey = HKEY_CURRENT_USER 注釋:主鍵
SubKey = "RemoteAccess" 注釋:子鍵
注釋:取得默認連接名
GetConnect = GetRegValue(hKey, SubKey, "Default")
End Function
Public Function GetRegValue(hKey As Long, lpszSubKey As String, szKey As String) As Variant
On Error GoTo ErrorRoutineErr:
Dim phkResult As Long
Dim lResult As Long
Dim szBuffer As String
Dim lBuffSize As Long
注釋:創建緩沖區
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
注釋:打開注冊鍵
RegOpenKeyEx hKey, lpszSubKey, 0, 1, phkResult
注釋:查詢結果
lResult = RegQueryValueEx(phkResult,szKey, 0, 0, szBuffer,lBuffSize)
注釋:關閉注冊鍵
RegCloseKey phkResult
注釋:返回結果
If lResult = ERROR_SUCCESS Then
GetRegValue = Left(szBuffer, lBuffSize - 1)
Else
GetRegValue = ""
End If
Exit Function
ErrorRoutineErr:
GetRegValue = ""
End Function
以上程序在 WIN98,VB6.0 下調試通過。
文章來源于領測軟件測試網 http://www.kjueaiud.com/