📄 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 + -