?? 26.htm
字號:
<p>斷開撥號網絡的連接</p>
<p></p>
<p>'有沒有簡便的方法在VB中讓MODEM斷線?</p>
<p>'我在程序中使用撥號網絡中導出的DUN文件來撥號登錄NT網,彈</p>
<p>'出“連接到”窗口后,用SENDKEYS命令發送回車,進入撥號并且</p>
<p>'登錄,系統自動恢復網絡驅動器映射(這之前是手工映射的,有</p>
<p>'沒有API命令執行網絡映射的?),但往往映射還未完成程序就</p>
<p>'繼續下去,從而得到錯誤的結果。怎樣才能一步步地完成撥號、</p>
<p>'映射,然后才繼續執行下面的程序呢?</p>
<p>'回答:</p>
<p>'要想控制撥號網絡,就要使用Remote Access Service (RAS) API,這個API最早是在Windows for Workgroup 3.11中出現的,現在它已經成為Win32 API的一個組成部分。掛斷撥號網絡的函數叫RasHangUp,這個函數的功能和用法都很簡單,它只有一個參數,就是要掛斷的撥號網絡連接的句柄。我們可以利用</p>
<p>'RasEnumConnections獲得當前系統所有RAS連接(通常我們的系統在一個時刻只使用一個撥號網絡連接),利用這個函數我就可以得到RasHangUp所需的句柄了。不過RasEnumConnections函數在Windows 95和 Windows NT下的使用略有不同,限于篇幅我們只給出在Windows 95下調用該函數的例子。讀者可以從Win32 API的手冊找到所有相關函數的詳細介紹,不過VB的WIN32API.TXT中沒有包括RAS API所需的聲明語句,我們在下面給出解決本問題需要的函數和結構聲明。如果希望深入研究這個問題,可以訪問參考QA000035 “在VB中如何實現自動啟動撥號網絡”,從中可以找到完整的RAS API聲明和在Windows NT下調用RasEnumConnections函數的例子 。</p>
<p>'為了運行下面這個例子,首先需要建立一個窗體,在窗體上放置一個按鈕,然后輸入以下語句:</p>
<p>Option Explicit</p>
<p>Private Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long</p>
<p>Private Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long</p>
<p></p>
<p>Const RAS95_MaxEntryName = 256</p>
<p>Const RAS95_MaxDeviceName = 128</p>
<p>Const RAS_MaxDeviceType = 16</p>
<p></p>
<p>Private Type RASCONN95</p>
<p>'set dwsize to 412</p>
<p>dwSize As Long</p>
<p>hRasConn As Long</p>
<p>szEntryName(RAS95_MaxEntryName) As Byte</p>
<p>szDeviceType(RAS_MaxDeviceType) As Byte</p>
<p>szDeviceName(RAS95_MaxDeviceName) As Byte</p>
<p>End Type</p>
<p></p>
<p>Private Sub Command1_Click()</p>
<p>Dim lngRetCode As Long</p>
<p>Dim lpcb As Long</p>
<p>Dim lpcConnections As Long</p>
<p>Dim intArraySize As Integer</p>
<p>Dim intLooper As Integer</p>
<p></p>
<p>ReDim lprasconn95(intArraySize) As RASCONN95</p>
<p>lprasconn95(0).dwSize = 412</p>
<p>lpcb = 256 * lprasconn95(0).dwSize</p>
<p>lngRetCode = RasEnumConnections(lprasconn95(0), lpcb, lpcConnections)</p>
<p></p>
<p>If lngRetCode = 0 Then</p>
<p>If lpcConnections > 0 Then</p>
<p>For intLooper = 0 To lpcConnections - 1</p>
<p>RasHangUp lprasconn95(intLooper).hRasConn</p>
<p>Next intLooper</p>
<p>Else</p>
<p>MsgBox "沒有撥號網絡連接!", vbInformation</p>
<p>End If</p>
<p>End If</p>
<p>End Sub</p>
<p>'運行時,按下按鈕就可以斷開撥號網絡的連接。</p>
<p></p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -