怎样截获系统关闭的消息(100分)

  • 主题发起人 主题发起人 zmy1
  • 开始时间 开始时间
Z

zmy1

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样截获系统关闭的消息,使自己的程序在关机前处理一些事情,然后才关机.
 
The WM_QUERYENDSESSION message is sent when the user chooses to end <br>the Windows session or when an application calls the ExitWindows <br>function. If any application returns zero, the Windows session is <br>not ended. Windows stops sending WM_QUERYENDSESSION messages as soon<br>&nbsp;as one application returns zero.<br>看帮助{Program Files}/Borland/Borland Shared/MSHelp/tapi.hlp <br>查WM_ENDSESSION WM_QUERYENDSESSION
 
1.Procedure WMQUERYENDSESSION(Var Msg: TMessage);message WM_QUERYENDSESSION<br>Begin<br>&nbsp; //here is your code<br>End;<br>2.在Form的OnCloseQuery中处理
 
<br>procedure WMQUERYENDSESSION(var message:Tmessage);message WM_QUERYENDSESSION;<br>方法1:<br>procedure TForm1.WMQUERYENDSESSION(var message:Tmessage);<br>begin<br>&nbsp; //加上你的代码;<br>&nbsp; message.result:=1;<br>{注:如不加此句,系统便不会关闭}<br>end;<br><br>方法2:{此方法在每次试图关闭程序时都起作用,不一定是系统关闭时}<br>procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);<br>begin<br>&nbsp; //你的代码<br>&nbsp; CanClose:=False{不退出,若设置为True则可退出}<br>end;<br>
 
在OnClose里面也可以,如果不然系统退出,可以用Abort指令终止关闭<br>过程。<br>procedure TFrmMain.OnClose(。。。)<br>begin<br>//你的代码<br>if XXXXX then Abort; //终止退出<br>end;<br>&nbsp;
 
请问有无方法使程序最先截获WM_QUERYENDSESSION消息
 
接受答案了.
 
后退
顶部