用BCB实现克制用户封锁Window系统
在软件的安装或演示操纵等进程中,假如封锁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