在C++ Builder程序中控制Windows关机 （作者：许锦新　2000年08月14日 19:16） 我们在应用程序编制完成后，需要设计应用程序的包装和分发功能。在编写安装程序时，经常会遇到这样的问题：程序安装完成后需要重新启动计算机。那么在代码中如何控制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环境下运行通过。