Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Внизне перехватывается WM_QUERYENDSESSION ! Найти похожие ветки
← →
VikMix (2006-01-29 12:31) [0]Здравствуйте! CanClose = false в FormCloseQuery(),
вставил свой обработчик на WM_QUERYENDSESSION и WM_ENDSESSION, но при выключении комп-ра не вызывается! Может ли проблема быть в том, что приложение находится в состоянии minimize ? если да то что делать? ХП просто отказывается выключаться!
← →
Юрий Зотов © (2006-01-29 12:57) [1]Если CanClose всегда False, то и не должно выключаться, Вы же сами запретили.
А что обработчик не вызывается - код в студию.
← →
Набережных С. © (2006-01-29 12:58) [2]var
EndSessionFlag: boolean = false;
procedure ...FormCloseQuery(...);
begin
CanClose:= EndSessionFlag;
end;
procedure ...WmQueryEndSession(...);
begin
EndSessionFlag:= true;
inherited;
end;
← →
VikMix (2006-01-29 13:26) [3]Дело в том что в обработчике уст-ся спец влаг разрешающий закрыть прил-е.
Вот код:
....
protected
procedure WMGetSysCommand(var Message :TMessage); message WM_SYSCOMMAND;
......
procedure TMainForm.WMGetSysCommand(var Message : TMessage) ;
Begin
if Message.wParam = SC_MINIMIZE then
begin
TrayTimer.Enabled:=true; // вызывается!!! значит обработчик рабочий!
Inherited ;
end Else
if (Message.wParam=WM_QUERYENDSESSION)or(Message.wParam=WM_ENDSESSION)then
begin
// halt;
CantClose:=false;
MainForm.Close();
end else
Inherited ;
End;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if CantClose then
begin
CanClose:= false;
Application.Minimize; // я склонен к проблеме Minimize хотя это наверно глупость (
TrayTimer.Enabled:=true;
end ;
end;
← →
Набережных С. © (2006-01-29 13:45) [4]Мда-а...уж... Откуда этот бред?
TForm1 = class(TForm)
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
FEndSessionFlag: boolean;
procedure WmQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= FEndSessionFlag;
end;
procedure TForm1.WmQueryEndSession(var Message: TWMQueryEndSession);
begin
FEndSessionFlag:= true;
inherited;
end;
← →
Плохиш © (2006-01-29 14:46) [5]
> procedure TMainForm.FormCloseQuery(Sender: TObject; var
> CanClose: Boolean);
> begin
> if CantClose then
> begin
> CanClose:= false;> Application.Minimize; // я склонен к проблеме Minimize
> хотя это наверно глупость (
> TrayTimer.Enabled:=true;
> end ;
> end;
Ты сам запретил форме закрываться, о чём в [1] и сказано.
> Набережных С. © (29.01.06 13:45) [4]
> Мда-а...уж... Откуда этот бред?
Полностью поддерживаю
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c