VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 在VB应用程序中控制Win95的启动
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:7332, 日期:2001-06-21
在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 环 境 下 运 行 正 常。