搜索
bottom↓
回复: 5

在C++ Builder程序中控制Windows关机

[复制链接]

出0入0汤圆

发表于 2008-4-1 11:21:35 | 显示全部楼层 |阅读模式
  我们在应用程序编制完成后,需要设计应用程序的包装和分发功能。在编写安装程序时,经常会遇到这样的问题:程序安装完成后需要重新启动计算机。那么在代码中如何控制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环境下运行通过。

  摘自《赛迪网》 许锦新/文

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-4-1 13:10:33 | 显示全部楼层
这功能在windows NT/XP 下不能直接用了,因为要先取得特权。

出0入0汤圆

 楼主| 发表于 2008-4-1 13:51:55 | 显示全部楼层
难怪我试了没反应。。。

出0入0汤圆

发表于 2008-4-5 20:27:40 | 显示全部楼层
没用?

出0入0汤圆

 楼主| 发表于 2008-4-6 23:16:56 | 显示全部楼层
是的.这个程序我在XP下试过了.关不了机..明天去公司发个XP下可以用的上来.

出0入22汤圆

发表于 2008-4-7 13:11:12 | 显示全部楼层
windows xp 比较简单了,直接调用shutdown.exe就可以了嘛。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 13:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表