在VB程序中怎樣掛斷撥號網(wǎng)絡(luò)

字號:

要想控制撥號網(wǎng)絡(luò),就要使用 Remote Access Service (RAS) API,這個API最早是在Windows for Workgroup 3.11中出現(xiàn)的,現(xiàn)在它已經(jīng)成為Win32 API的一個組成部分。掛斷撥號網(wǎng)絡(luò)的函數(shù)叫RasHangUp,這個函數(shù)的功能和用法都很簡單,它只有一個參數(shù),就是要掛斷的撥號網(wǎng)絡(luò)連接的句柄。我們可以利用 RasEnumConnections 獲得當前系統(tǒng)所有RAS連接(通常我們的系統(tǒng)在一個時刻只使用一個撥號網(wǎng)絡(luò)連接),利用這個函數(shù)我們就可以得到RasHangUp所需的句柄了。不過 RasEnumConnections 函數(shù)在Windows 95和Windows NT下的使用略有不同,限于篇幅我們只給出在Windows 95下調(diào)用該函數(shù)的例子。讀者可以從Win32 API的手冊找到所有相關(guān)函數(shù)的詳細介紹,不過VB的WIN32API.TXT中沒有包括RAS API所需的聲明語句,我們在下面給出解決本問題所需要的函數(shù)和結(jié)構(gòu)聲明。
     為了運行下面這個例子,首先需要建立一個窗體,在窗體上放置一個按鈕,然后輸入以下語句:
    Option Explicit
    Private Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
    Private Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long,lpcConnections As Long) As Long
    Const RAS95_MaxEntryName = 256
    Const RAS95_MaxDeviceName = 128
    Const RAS_MaxDeviceType = 16
    Private Type RASCONN95
     'set dwsize to 412
     dwSize As Long
     hRasConn As Long
     szEntryName(RAS95_MaxEntryName) As Byte
     szDeviceType(RAS_MaxDeviceType) As Byte
     szDeviceName(RAS95_MaxDeviceName) As Byte
    End Type
    Private Sub Command1_Click()
     Dim lngRetCode As Long
     Dim lpcb As Long
     Dim lpcConnections As Long
     Dim intArraySize As Integer
     Dim intLooper As Integer
     ReDim lprasconn95(intArraySize) As RASCONN95
     lprasconn95(0).dwSize = 412
     lpcb = 256 * lprasconn95(0).dwSize
     lngRetCode = RasEnumConnections(lprasconn95(0), lpcb, lpcConnections)
     If lngRetCode = 0 Then
     If lpcConnections > 0 Then
     For intLooper = 0 To lpcConnections - 1
       RasHangUp lprasconn95(intLooper).hRasConn
     Next intLooper
     Else
     MsgBox "沒有撥號網(wǎng)絡(luò)連接!", vbInformation
     End If
     End If
    End Sub
    運行時,按下按鈕就可以斷開撥號網(wǎng)絡(luò)的連接。