VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 在VB 应 用 程 序 中 控 制Win95 的 启 动
发表评论(0)作者:王 卫, 平台:VB6.0+Win98, 阅读:7318, 日期:2001-04-01
在VB 应 用 程 序 中 控 制Win95 的 启 动
新 疆 钢 铁 集 团 公 司 自 动 化 技 术 公 司
王 卫
---- 在 用Visual Basic 编 写Win95 应 用 程 序 时, 有 时 可 能 希 望 由 程 序 来 控 制 计 算 机 的 启 动 功 能, 比 如 当 应 用 程 序 对 系 统 注 册 表 作 了 修 改 后 需 要 重 新 启 动Win95。

---- 那 么, 如 何 在 应 用 程 序 中 控 制Win95 的 启 动 呢 ? 由 于Visual Basic 自 身 没 有 提 供 相 关 的 命 令 和 函 数, 我 们 只 好 求 助 于Windows API 函 数ExitWindowsEx, 调 用 该 函 数, 我 们 可 以 完 成 重 新 启 动、 关 机、 强 制 关 闭 所 有 应 用 程 序 或 重 新 登 录 等 操 作, 下 面 是 该 函 数 的 函 数 声 明:

    Declare Function ExitWindowsEx Lib
            "user32" (ByVal uFlags As Long,
         ByVal dwReserved As Long) As Long

---- ExitWindowsEx 函 数 有 两 个 参 数, 其 中 第 二 个 为 保 留 参 数, 第 一 个 参 数uFlags 用 来 决 定 调 用 函 数 时 的 具 体 动 作, 可 能 的 取 值 和 含 义 见 下 表:
U flags的值含义
0 重新登录
1 关闭计算机
2 重新启动
4 强制关闭所有应用程序

---- 下 面 以 一 个 小 程 序 为 例, 介 绍 如 何 在 程 序 中 控 制Win95 的 启 动:
---- 新 建 一 个 工 程, 添 加 一 个 普 通 窗 体Form1, 在 窗 体 上 放 置 一 个Frame 控 件Frame1、 一 个 命 令 按 钮 控 件Command1 和 一 个 包 含4 个 元 素 的 选 项 按 钮 控 件 数 组Option1。 再 给 工 程 添 加 一 个 代 码 模 块Module1, 在 其

---- 中 写 上 如 下 的 声 明( 注 意ExitWindowsEx 的 函 数 声 明 必 须 写 在 一 行 上):

Public Const LOGOFF = 0
Public Const SHUTDOWN = 1
Public Const REBOOT = 2
Public Const CLOSEPROGRAMES = 4
Declare Function ExitWindowsEx Lib "user32"
    (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

在窗体Form1的代码模块中编写
      Command1的Click事件过程如下:

Private Sub Command1_Click()
    Dim How As Long
    If Option1(0).Value = True Then
        How = LOGOFF          注释:选择了重新登录
    ElseIf Option1(1).Value = True Then
        How = REBOOT          注释:选择了重新启动
    ElseIf Option1(2).Value = True Then
        How = SHUTDOWN        注释:选择了关闭计算机
    Else
        How = CLOSEPROGRAMES  注释:选择了关闭所有程序
    End If
    Call ExitWindowsEx(How, 0)  注释:执行操作
End Sub

---- 按 下F5, 运 行 本 程 序, 选 择 某 个 功 能, 然 后 按 下 确 认 按 钮, 嘿 ! 不 错 吧。 本 程 序 用Visual Basic 5.0 编 写, 在Pwin95 和Pwin97 环 境 下 运 行 正 常。