★★★★富有挑战的问题★★★★(100分)

  • 主题发起人 主题发起人 xzhifei
  • 开始时间 开始时间
X

xzhifei

Unregistered / Unconfirmed
GUEST, unregistred user!
本人做了一个小程序,程序一运行便自动隐藏到系统托盘,类似于
WINAMP,现在有一个烦人的问题,就是它会阻止关闭(或重启、注
销)系统,只有把主界面显示出来才不会有这样的问题,我已经在
程序里加了接收关闭系统的消息的过程,为什么当它隐藏时就接收
不到。

Procedure WMQueryEndSession(Var Msg: TWMQueryEndSession); message WM_QueryEndSession;

Procedure TFrm_Main.WMQueryEndSession(Var Msg: TWMQueryEndSession);
Begin
Msg.Result := 1;
Application.Terminate;

End;


请各位高手帮我解决一下!!

 
就是这儿屏蔽了系统的关机消息,不知你发送消息的时候有没有加程序的句柄。
 
将你上面的消息处理过程改为:
Procedure TFrm_Main.WMQueryEndSession(Var Msg: TWMQueryEndSession);
Begin
Msg.wParam:=true;
End;
再增加一个消息处理:
Procedure WMEndSession(Var Msg: TWMEndSession); message WM_EndSession;
Procedure TFrm_Main.WMEndSession(Var Msg: TWMEndSession);
Begin
Msg.Result := 1;
Application.Terminate;
End;

大概就是这样,你再调试
 
试了windbell的答案,可以接受到消息了,但是把自已的程序关闭后,
系统却无法继续进行,该关机的不关机,该重启的不重启,这是怎么回
事啊
 
可能问题出在这里
Procedure WMEndSession(Var Msg: TWMEndSession); message WM_EndSession;
Procedure TFrm_Main.WMEndSession(Var Msg: TWMEndSession);
Begin
Msg.Result := 1;
[red]Application.Terminate;[/red] 
//将这里改成向应用程序发送一个wm_quit消息看看行不行,要不就将这个消息处理去掉
End;
 
[blue]挖靠!!!该说的都说过啦?

我也遇见过这样的问题的

分分?`~````````````[/blue]
 
我怀疑不是这儿的问题,不知道还没有其它的方法会阻止,我先试试,给分先
 
后退
顶部