精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..网络程序开发..〓〓>>网络高级应用>>Tip:如何控制拨号网络

主题:Tip:如何控制拨号网络
发信人: cobe()
整理人: winsy(2003-03-09 13:21:55), 站内信件
下文转自:问专家站点 (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]

[关闭][返回]