急,大家来帮忙,关于windows消息的问题(100分)

  • 主题发起人 主题发起人 sgzhou
  • 开始时间 开始时间
S

sgzhou

Unregistered / Unconfirmed
GUEST, unregistred user!
在应用程序中,如何能得到windows要关机的消息
 
Window要关机的时候,会把关机消息逐个传给正在运行的每个程序,可以在WndProc中取<br>得这个消息。
 
能不能讲的具体一些,我现在碰到这样的问题<br>我自己写了个service,当机器关机前,我会往数据库里写一条记录<br>但当我在service的shutdown事件上执行写库操作时,数据库已经被系统先关掉了
 
写 到 其它 地方<br><br>&nbsp; 开机时往数据库里写一条记录<br>
 
看下面这些:<br>An application agrees to terminate by returning TRUE when it receives this message <br>(or by allowing the DefWindowProc function to process the message). <br>If any application returns FALSE when it receives the WM_QUERYENDSESSION message, <br>the shutdown is canceled.<br>就是说消息WM_QUERYENDSESSION,可以。
 
还有,FormCloseQuery似乎就可以相应。
 
可以的,在Forms里面就可以看到,产生WMQueryEndSession事件后返回的数据和CloseQuery有关。<br>&nbsp; Message.Result := Integer(CloseQuery and CallTerminateProcs);
 
同意 YZSHI 楼上的楼上。呵呵在程序中添加如下代码:<br>procedure winexit(var msg:Tmessage);<br>message WM_QUERYENDSESSION;<br><br>procedure TForm1.winexit(var msg: Tmessage);<br><br>begin<br>if Application.MessageBox('系统即将被关闭,确认吗?','提示',mb_iconQuestion+mb_yesno)=idYes then<br>&nbsp; &nbsp; msg.Result:=1<br>&nbsp; else begin<br>&nbsp; &nbsp; msg.Result:=0;<br>&nbsp; &nbsp; end;<br>end;<br>即可处理你的事件。如先保存数据。。。。<br>
 
定义WM_QUERYENDSESSION的消息处理函数,一般来说,windows在关机之前向每一个应用程序<br>发此消息,只有有一个APP返回0,则不能关机。
 
多人接受答案了。
 
后退
顶部