发信人: cobe()
整理人: fishy(2000-05-23 14:07:04), 站内信件
|
下文转自:问专家站点 (http://askpro.yeah.net)
要 想 控 制 拨 号 网 络 , 就 要 使 用 Remote Access Service (RAS)
API, 这 个 API最 早 是 在 Windows for Workgroup 3.11中 出 现 的 , 现
在 它 已 经 成 为 Win32 API的 一 个 组 成 部 分 。 挂 断 拨 号 网 络
的 函 数 叫 RasHangUp, 这 个 函 数 的 功 能 和 用 法 都 很 简 单 , 它
只 有 一 个 参 数 , 就 是 要 挂 断 的 拨 号 网 络 连 接 的 句 柄 。
我 们 可 以 利 用 RasEnumConnections获 得 当 前 系 统 所 有 RAS连 接 (
通 常 我 们 的 系 统 在 一 个 时 刻 只 使 用 一 个 拨 号 网 络 连 接
) , 利 用 这 个 函 数 我 们 就 可 以 得 到 RasHangUp所 需 的 句 柄 了
。 不 过 RasEnumConnections函 数 在 Windows 95和 Windows NT下 的 使 用
略 有 不 同 , 限 于 篇 幅 我 们 只 给 出 在 Windows 95下 调 用 该 函
数 的 例 子 。 读 者 可 以 从 Win32 API的 手 册 找 到 所 有 相 关 函
数 的 详 细 介 绍 , 不 过 VB的 WIN32API.TXT中 没 有 包 括 RAS API所 需
的 声 明 语 句 , 我 们 在 下 面 给 出 解 决 本 问 题 所 需 要 的 函
数 和 结 构 声 明 。 如 果 希 望 深 入 研 究 这 个 问 题 , 可 以 访 问
参 考 QA000035 “在VB中如何实现自动启动拨号网络”, 从 中 可 以 找 到
完 整 的 RAS API声 明 和 在 Windows NT下 调 用 RasEnumConnections函 数
的 例 子 。
为 了 运 行 下 面 这 个 例 子 , 首 先 需 要 建 立 一 个 窗 体 ,
在 窗 体 上 放 置 一 个 按 钮 , 然 后 输 入 以 下 语 句 :
Option Explicit
Private Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHa
ngUpA" (ByVal hRasConn As Long) As Long
Private Declare Function RasEnumConnections Lib "RasApi32.DLL" Ali
as "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnectio
ns 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, lpcConnecti
ons)
If lngRetCode = 0 Then
If lpcConnections > 0 Then
For intLooper = 0 To lpcConnections - 1
RasHangUp lprasconn95(intLooper).hRasConn
Next intLooper
Else
MsgBox "没 有 拨 号 网 络 连 接 ! ", vbInformation
End If
End If
End Sub
运 行 时 , 按 下 按 钮 就 可 以 断 开 拨 号 网 络 的 连 接 。
-- ■■■■■■■ 请大家提问前务必浏览精华区
■ 专 V■ VB小世界
■ 用 B■ http://vbsworld.yeah.net
■ 章 版■ [email protected]
■ COBE■
■■■■■■■
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.112.79.30]
|
|