VB.NET網(wǎng)絡技巧啟動撥號網(wǎng)絡中的連接案例分析
學習VB.NET時,你可能會遇到VB.NET網(wǎng)絡問題,這里將總結一個VB.NET網(wǎng)絡技巧的案例,在這里拿出來和大家分享一下。
VB.NET網(wǎng)絡技巧案例:啟動撥號網(wǎng)絡中的連接
由于撥號網(wǎng)絡不是一個可執(zhí)行文件, 所以要啟動撥號網(wǎng)絡,需要借助 explorer.exe 。但若是要啟動撥號網(wǎng)絡中的某一個連接,則要借助rundll.exe 和 rnaui.dll兩個文件。啟動方法如下(假定此連接名稱為163):
- Shell “rundll rnaui.dll,RnaDial 163”,vbNormalFocus
上面假定了連接名稱,但在實際編程中我們是不知道連接名稱的。在窗體上放置一個命令按鈕(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
- /*常數(shù)的設定*/
- Const HKEY_CURRENT_USER = &H80000001
- Const ERROR_SUCCESS = 0
在命令按鈕(cmdCallConnect)中加入如下代碼:
- Private Sub cmdCallConnect_Click()
- /*啟動默認撥號連接*/
- Shell “rundll rnaui.dll,RnaDial” + GetConnect, vbNormalFocus
- End Sub
- /*取得連接的函數(shù)(GetConnect)*/
- 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
- /*取得注冊的函數(shù)(GetRegvalue)*/
- 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
- /*創(chuàng)建緩沖區(qū)*/
- 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
以上就是總結的VB.NET網(wǎng)絡技巧,在機器上跑試一下。