如何让程序在Windows关闭时自动结束运行?
我写的一个程序,如果不关闭它就关闭Windows,Windows就会好像死机一样,等老半天才看到一个“程序没有响应”的提示框。有没有办法让程序检测到Windows关闭而自动关闭自己呢? 问题点数:50、回复次数:7Top
1 楼zwhhoo(我爱真理)回复于 2002-02-22 21:07:45 得分 0
好像有一个消息。Top
2 楼torble(阿裕)回复于 2002-02-22 21:17:14 得分 35
Windows 在关闭时会向所有的应用程序发送WM_QUERYENDSESSION 消息
WM_QUERYENDSESSION 结构
nSource = (UINT) wParam; // source of end-session request
fLogOff = lParam // logoff flag
nSource - Reserved for future use.
fLogOff - Value of lParam. Indicates whether the user is logging off or shutting down the system.
// Delphi 中截获 WM_QUERYENDSESSION 消息
private
procedure wmQUERYENDSESSION(var msg:tWMQUERYENDSESSION);message WM_QUERYENDSESSION;
......
procedure wmQUERYENDSESSION(var msg:tWMQUERYENDSESSION);
begin
// 这里加入你要处理的代码
end;Top
3 楼stiwin((忙碌))回复于 2002-02-22 22:26:00 得分 0
一个技巧使用户无法关机:
procedure wmQUERYENDSESSION(var msg:tWMQUERYENDSESSION);message WM_QUERYENDSESSION;
procedure TForm1.WmQUERYENDSESSION(VAR msg:tWMQUERYENDSESSION);
begin
msg.Result:=0;
end;
哈哈不能关机了
Top
4 楼F4(陪你去看流星雨)回复于 2002-02-22 22:48:21 得分 10
关键是接收到WM_QUERYENDSESSION 消息后
你的程序要结束没有响应的部分!
东方快车也有这个毛病!Top
5 楼movingboy(movingboy)回复于 2002-02-25 21:44:18 得分 0
To torble:我的代码应该处理些什么呢?
To F4:我的程序按正常的方法关闭(如按系统菜单上的关闭)可以很正常的结束。现在我发现在“关闭Windows”的窗体上按下“是”后,Windows只是把“关闭Windows”这个窗体关闭了,其它啥也没做。Top
6 楼cysnowboy(跳水的鱼儿)回复于 2002-02-25 21:56:56 得分 5
关注Top
7 楼movingboy(movingboy)回复于 2002-03-17 11:54:01 得分 0
尽管没有解决我的问题,但我还是给分。Top




