Главная страница
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.046 c
6-1131122906
WebSQLNeeder
2005-11-04 19:48
2006.02.19
Как запретить что бы в WebBrowser вылетали окошки JavaScript? Или


15-1138448627
vidiv
2006-01-28 14:43
2006.02.19
Ваше мнение о человеке по фотогрфии.


15-1138632090
Din
2006-01-30 17:41
2006.02.19
Как сделать чтобы Интернет Эксплороер не выкачивал флеш-ролики?


15-1138553518
Gero
2006-01-29 19:51
2006.02.19
Samsung SH-B022 пишущий Blu-ray драйв – выйдет в уже апреле!


4-1133766431
alex_1234
2005-12-05 10:07
2006.02.19
"Обрыв" модема ???