首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > C/C#/C++ > 正文
  • 在 C++ 中控制Windows关机
      2007-2-25  来源:网络资源  编辑:Jsbulo  热度:

      我们在应用程序编制完成后,需要设计应用程序的包装和分发功能。在编写安装程序时,经常会遇到这样的问题:程序安装完成后需要重新启动计算机。那么在代码中如何控制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);

      }

        

        设置参数说明:

      设置值  简要意义

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

      EWX_LOGOFF  退出而以其它身份登录

      EWX_REBOOT  重新启动

      EWX_SHUTDOWN  关机  

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