在Visual Basic 程 序 中, 可 以 使 用Windows API 函 数 来 重 新 启 动 计 算 机 系 统, 文 本 介 绍 如 何 退 出Windows 95 并 关 闭 计 算 机 系 统。
关 闭 计 算 机 系 统
---- 可 以 使 用Windows API 的ExitWindowsEx 函 数 来 从Visual Basic 程 序 中 重 新 启 动 计 算 机 系 统。 要 使 用 该 函 数, 需 要 将 如 下 声 明 语 句 包 含 在 窗 体 的 通 常 声 明 部 分 中:
---- Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
---- ExitWindowsEx 函 数 需 要2 个 参 数, 可 以 使 用 一 个 或 多 个 下 面 的 标 识 的 组 合 来 告 诉ExitWindowsEx 函 数 希 望 进 行 关 机 过 程。
---- EWX_FORCE 所 有 的 进 程 都 被 强 制 终 止。
---- EWX_LOGOFF 所 有 的 进 程 被 强 制 终 止, 并 且 用 户 退 出 登 录(logged off)。
---- EWX_POWEROFF 计 算 机 系 统 被 关 机, 并 且 如 果 支 持 节 电 特 性, 则 计 算 机 被 物 理 关 机。
---- EWX_REBOOT 计 算 机 系 统 被 关 机 并 重 新 启 动。
---- EWX_SHUTDOWN 计 算 机 被 物 理 地 安 全 地 关 机。
---- 下 面 的 样 例 程 序 中 使 用 了 上 面 的 三 个 标 识 的 组 合。 该 标 识 组 合(EWX_LOGOFF,EWX_FORCE, 以 及EWX_REBOOT) 告 诉Windows 95 退 出 所 有 正 在 执 行 的 进 程, 使 用 户 退 出 网 络 登 录, 使 计 算 机 系 统 处 于 准 备 状 态 以 供 用 户 关 机。
样 例 程 序
---- 该 样 例 程 序 显 示 了 如 何 关 闭 计 算 机 系 统。
---- 1. 在Visual Basic 中 开 始 一 个 新 的 项 目, 采 用 缺 省 的 方 法 建 立Form1。
---- 2. 将 如 下 常 量 和 声 明 语 句 添 加 到Form1 的 通 常 声 明 部 分 中( 注 意 该 声 明 语 句 需 要 书 写 在 一 行 内):
Private Declare Function ExitWindowsEx Lib "user32"
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Const EWX_POWEROFF = 8
Const EWX_RESET = EWX_LOGOFF + EWX_FORCE + EWX_REBOOT
---- 3. 在Form1 上 添 加 一 个 命 令 按 钮 控 件, 采 用 缺 省 的 方 法 建 立Comand1。 将 它 的Caption 属 性 设 置 为“ 重 新 启 动 计 算 机”。
---- 4. 将 如 下 代 码 添 加 到Command1 的 单 击 事 件 中:
Private Sub Command1_Click()
Dim X As Long
X = ExitWindowsEx(EWX_RESET, dwReserved)
End Sub
---- 按 下F5 来 运 行 上 述 样 例 程 序, 单 击 命 令 按 钮, 即 可 重 新 启 动 计 算 机 系 统。