2022企业服务(新型)提供商TOP150
全世界各行各业联合起来,internet一定要实现!

实现禁止用户关闭Window9X

2004-02-14 eNet&Ciweek

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

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

  unitUnit1;  

  interface 

  uses

  Windows,Messages,SysUtils,

  Classes,Graphics,Controls,

  Forms,Dialogs,StdCtrls; 

  type

  TForm1=class(TForm)

  CheckBox1:TCheckBox;

  private

  {Privatedeclarations}

  //声明拦截WM_QueryEndSession消息的过程

  procedureWMQueryEndSession(varMsg:TMessage);

  messageWM_QueryEndSession;

  public

  {Publicdeclarations}

  end; 

  var

  Form1:TForm1;  

  implementation 

  {$R*.DFM}

  procedureTForm1.WMQueryEndSession

  (varMsg:TMessage);

  begin

  ifCheckBox1.CheckedthenMsg.Result:=1

  elseMsg.Result:=0;

  end;

  end.  

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

相关频道: eNews

您对本文或本站有任何意见,请在下方提交,谢谢!

投稿信箱:tougao@enet16.com