procedure WMQueryEndSession(var msg:TMessage); message WM_QueryEndSession;procedure TMainForm.WMQueryEndSession(var msg:TMessage);
begin
  msg.Result:=1; //为1表示允许重启,为0表示不允许重启
end;或者截获WM_EndSession消息
  
procedure TMainForm.WMEndSession(var msg:TMesssage);

解决方案 »

  1.   

    调用系统函数:exitwindowsex(wflags,dwreserved);
    其中wflags:ewx_force:强迫中止没有响应的的进程
               ewx_logoff:中止进程
               ewx_reboot:重新启动系统
               exx_shutdown:关闭系统  
    dwreserved:0 是保留
    你可以试一下。
      

  2.   

    TO heartbeat_hb(随时):
    我就是不懂得如何拦截关机消息!!
      

  3.   

    拦截关机消息请参考taxi(游少年) 
      

  4.   

    procedure WMQueryEndSession( var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;procedure TMainFrm.WMQueryEndSession(var Message: TWMQueryEndSession);
    begin
      Message.Result:=1;
      gEndSession := True;
    end;(Set this for the CloseQuery event)procedure TMainFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
    CanClose := True;
      if gQueryEnd and not gEndSession then
    //加入处理事件
        if MessageDlg('退出应用程序,确定吗?',
                      mtInformation, mbOKCancel, 0) = mrCancel then CanClose := False
    end;