快速业务通道

在CB程序中控制Windows关机

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

我们在应用程序编制完成后,需要设计应用程序的包装和分发功能。在编写安装程序时,经常会遇到这样的问题:程序安装完成后需要重新启动计算机。那么在代码中如何控制Windows的关机或重新启动呢?

要实现这个功能,需要用到Windows API提供的一个ExitWindowsEx函数。我们可以通过查看C++ Builder提供的帮助文件得到这个函数的使用格式:

BOOL ExitWindowsEx(
   UINT uFlags, // 设置关机参数
   DWORD dwReserved // 系统保留字
   );

其中uFlags的主要设置值及意义见表1。

dwReserved是系统保留字,随便填入个0即可。

了解ExitWindowsEx函数的使用格式后,下面以实例说明在C++ Builder中控制Windows关机或重新启动的方法。

设计步骤如下:

1.运行C++ Builder系统后,先激活选单“File/New Application”,创建一个新工程。

2.激活选单“File/Save As”把窗体单元以文件名exitu.cpp存盘,然后激活选单“File/Save Project As”把工程文件以文件名exitp.bpr存盘。(注意:工程文件名与窗体单元文件名不要同名。)

3.在窗体上增加四个TButton组件Button1、Button2、Button3和Button4,分别设置它们的Caption属性为“其它身份登录”、“关机”、“重新启动”和“强制关机”。

4.分别设置Button1、Button2、Button3和Button4组件的OnClick事件响应代码如下:

  void __fastcall TForm1::Button1Click(TObject Sender)
   {
   //其它身份登录
   DWORD temp;
   ExitWindowsEx(EWX_LOGOFF,temp);
   }
   //------------------------------
   void __fastcall TForm1::Button2Click(TObject Sender)
   {
   //关机
   DWORD temp;
   ExitWindowsEx(EWX_SHUTDOWN,temp);
   }
   //------------------------------
   void __fastcall TForm1::Button3Click(TObject Sender)
   {
   //重新启动
   DWORD temp;
   ExitWindowsEx(EWX_REBOOT,temp);
   }
   //------------------------------
   void __fastcall TForm1::Button4Click(TObject Sender)
   {
   //强制关机
   DWORD temp;
   ExitWindowsEx(EWX_FORCE,temp);
   }

表1设置值 简要意义

EWX_FORCE 强制终止程序运行而退出系统

EWX_LOGOFF 退出而以其它身份登录

EWX_REBOOT 重新启动

EWX_SHUTDOWN 关机

5.运行程序后,分别单击四个按钮测试它们的功能。如果能完成各种设置的功能,说明你已成功了,那么就可以将本文介绍的方法运用到自己开发的C++ Builder应用程序中去控制Windows的关闭了。

本程序在中文Windows 98、C++ Builder 5.0环境下运行通过。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号