我有托盘应用程序.
Onj FormCloseQuery我检查程序是否应该转到托盘而不是关闭它我把它放在托盘中(CanClose:= False)
但是,如果Windows因Windows关闭而尝试关闭我的应用程序,我不想将我的应用程序移动到托盘中,而是关闭它.
Win7终止我的应用程序,但XP没有关闭,因为我的应用程序仍然在托盘中.
如何检测Windows是否处于某种“关闭”模式?
谢谢!
解决方法
您的问题源于使用OnCloseQuery,这是一个错误的事件. Remy的回答解释了如何解决Windows关闭被默认的VCL结束会话消息处理阻止.而这又是由OnCloseQuery事件中的CanClose设置为False引起的.
该解决方法将完成工作,但有一个更简单的方法来处理这个.
不要让表格停止关闭,而是让它继续前进并关闭.完全删除OnCloseQuery事件.将其替换为OnClose事件.
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caNone; Visible := False; end;