龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

用BCB实现禁止用户关闭Window系统

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
在软件的安装或演示操作等过程中,假如关闭Windows系统会产生严重的后果,就必须禁止用户关闭Windows,直到完成相应的操作,那么如何才能禁止用户关闭Windows呢?其实很简单,当用户

  在软件的安装或演示操作等过程中,假如关闭Windows系统会产生严重的后果,就必须禁止用户关闭Windows,直到完成相应的操作,那么如何才能禁止用户关闭Windows呢?其实很简单,当用户关闭Windows时,系统会发送给各应用程序一个消息WM_QUERYENDSESSION,告诉各应用程序要关机了,假如反馈回来的消息值为0,那么Windows就不能关机。因此,截获WM_QUERYENDSESSION,并反馈回0,大功就告成了,下面是一个例子。

  

  

在下面这个例子中,我们在窗体中加入一个复选框(TCheckBox),假如用户不选中它,则无法关闭Windows,假如选中它,才可以关闭。在实际应用中,用户可首先设定一个布尔变量,当所需的作操都完成后,使其值变化,当程序检测到这个变量的值变化后才答应关闭Windows。为方便大家使用,给出窗体的完整代码(很短):

  

  

在.hpp中的Private段内加入以下代码:

  

//截获 WM_QUERYENDSESSION 消息。

  

BEGIN_MESSAGE_MAP

  

MESSAGE_HANDLER(WM_QUERYENDSESSION,TMessage,OnWMQueryEndSession)

  

END_MESSAGE_MAP(TForm);

  

void __fastcall TForm1::OnWMQueryEndSession(TMessage &Message);

  

  

在.cpp中添加以下代码:

  

  

void __fastcall TForm1::OnWMQueryEndSession(TMessage &Message)

  

{

  

//假如CheckBox被选中,答应关机。

  

if(CheckBox1->Checked)

  

Message.Result=1;

  

else

  

Message.Result=0;

  

}

  

  

----运行上面的程序,首先不要选中复选框,在Windows的“开始”菜单中选择“关闭系统-->关闭计算机或重新启动计算机”,你将发现屏幕闪烁了一下又恢复了正常;将复选框选中,再关闭计算机,这下就可如愿了。

  

  

----程序调试环境:C++ Builder 6.0 + sp3

  

windows 2000 ADV Server + sp3

  

  

  

精彩图集

赞助商链接