要想控制撥號網絡,就要使用RemoteAccessService(RAS)API,這個API最早是在WindowsforWorkgroup3.11中出現的,現在它已經成為Win32API的一個組成部分。掛斷撥號網絡的函數叫RasHangUp,這個函數的功能和用法都很簡單,它只有一個參數,就是要掛斷的撥號網絡連接的句柄。我們可以利用RasEnumConnections獲得當前系統所有RAS連接(通常我們的系統在一個時刻只使用一個撥號網絡連接),利用這個函數我們就可以得到RasHangUp所需的句柄了。不過RasEnumConnections函數在Windows95和WindowsNT下的使用略有不同,限於篇幅我們只給出在Windows95下調用該函數的例子。讀者可以從Win32API的手冊找到所有相關函數的詳細介紹,不過VB的WIN32API.TXT中沒有包括RASAPI所需的聲明語句,我們在下面給出解決本問題所需要的函數和結構聲明。
為了運行下面這個例子,首先需要建立一個窗體,在窗體上放置一個按鈕,然後輸入以下語句:
OptionExplicit
PrivateDeclareFunctionRasHangUpLib"RasApi32.DLL"Alias"RasHangUpA"(ByValhRasConnAsLong)AsLong
PrivateDeclareFunctionRasEnumConnectionsLib"RasApi32.DLL"Alias"RasEnumConnectionsA"(lprasconnAsAny,lpcbAsLong,lpcConnectionsAsLong)AsLong
ConstRAS95_MaxEntryName=256
ConstRAS95_MaxDeviceName=128
ConstRAS_MaxDeviceType=16
PrivateTypeRASCONN95
'setdwsizeto412
dwSizeAsLong
hRasConnAsLong
szEntryName(RAS95_MaxEntryName)AsByte
szDeviceType(RAS_MaxDeviceType)AsByte
szDeviceName(RAS95_MaxDeviceName)AsByte
EndType
PrivateSubCommand1_Click()
DimlngRetCodeAsLong
DimlpcbAsLong
DimlpcConnectionsAsLong
DimintArraySizeAsInteger
DimintLooperAsInteger
ReDimlprasconn95(intArraySize)AsRASCONN95
lprasconn95(0).dwSize=412
lpcb=256*lprasconn95(0).dwSize
lngRetCode=RasEnumConnections(lprasconn95(0),lpcb,lpcConnections)
IflngRetCode=0Then
IflpcConnections>0Then
ForintLooper=0TolpcConnections-1
RasHangUplprasconn95(intLooper).hRasConn
NextintLooper
Else
MsgBox"沒有撥號網絡連接!",vbInformation
EndIf
EndIf
EndSub
運行時,按下按鈕就可以斷開撥號網絡的連接。->