Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

не перехватывается 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
2-1138965450
guitarist
2006-02-03 14:17
2006.02.19
String --> PAnsiChar


15-1138180213
Red_imp
2006-01-25 12:10
2006.02.19
Народ посоветуйте программу для учета трафика


2-1138618320
V0va
2006-01-30 13:52
2006.02.19
WideString, хранение строк


2-1138722904
Arazel
2006-01-31 18:55
2006.02.19
КАк поместить все данные поля в DbLokupComboBox с помощью SQL


1-1137597119
galexis
2006-01-18 18:11
2006.02.19
Привязка позиции формы к компоненту на другой форме.