Главная страница
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.048 c
6-1131453071
Hereticsoul
2005-11-08 15:31
2006.02.19
TIdTcpServer,TIdTcpClient


3-1135066879
skulll
2005-12-20 11:21
2006.02.19
Помогите подключиться к MSSQL через DBE


3-1135158279
yk
2005-12-21 12:44
2006.02.19
Проблемы с подключением udf


2-1138868039
alexus
2006-02-02 11:13
2006.02.19
передать команду другому приложению


3-1135456112
Fed
2005-12-24 23:28
2006.02.19
Вычисляемое поле