У меня есть приложение, которое скрывается при закрытии красным крестом.Пользователь может выйти из него, щелкнув правой кнопкой мыши значок в трее и выбрав Выход.Но это, очевидно, заблокировало бы закрытие окон, поэтому я сделал процедуру, чтобы ответить на WM_QUERYENDSESSION, чтобы разрешить закрытие, вот соответствующий код:
procedure TMainForm.OnWindowsEnd(var Msg: TMessage); // responds to message WM_QUERYENDSESSION;
begin
AllowClose:=true;
Close;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=AllowClose;
if NOt AllowClose then
Hide;
end;
Но странная вещь продолжает происходить.Когда я выполняю завершение работы, это приложение красиво закрывается.Но это все.Когда я выполняю второе выключение, система выходит нормально.(Я проверяю это в WinXP).
В чем может быть причина?Спасибо
ОТВЕТ Код должен выглядеть следующим образом
procedure TMainForm.OnWindowsEnd(var Msg: TMessage); // responds to message WM_ENDSESSION;
begin
// Possible checking for flags, see http://msdn.microsoft.com/en-us/library/aa376889%28v=vs.85%29.aspx
AllowClose:=true;
Msg.Result:=1;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=AllowClose;
if NOt AllowClose then
Hide;
end;