Форма не обрабатывает события (процедуры) Close, CloseQuery!

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Kire313evz » 27.03.2010 13:23:35

Друзья подскажите!
Форма не обрабатывает события (процедуры) Close, CloseQuery в том случае если приложение активно и вызвать завершение работы windows.
Так же, организовал перехват системного сообщения WM_QUERYENDSESSION:

private
procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;


procedure TFormMain.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
inherited;
...
end;

И эта процедура не выполняется! Не пойму в чём дело! :(
Спасибо за помощь!
Kire313evz
новенький
 
Сообщения: 11
Зарегистрирован: 27.03.2010 12:59:06

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Kire313evz » 29.03.2010 06:54:57

Ну что, никто проверить не может, так у всех или нет! Бывалые в лазарусе подскажите!!!!! :( :( :(
Kire313evz
новенький
 
Сообщения: 11
Зарегистрирован: 27.03.2010 12:59:06

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение sign » 29.03.2010 07:30:09

У меня OnExit не отрабатывает.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Kire313evz » 29.03.2010 07:48:35

sign писал(а):У меня OnExit не отрабатывает.

Извини, а что такое событие есть у формы? Я не нашёл!

Добавлено спустя 1 минуту 49 секунд:
Может быть, у Lazarus, заведено отдельное событие на выключение системы???
Kire313evz
новенький
 
Сообщения: 11
Зарегистрирован: 27.03.2010 12:59:06

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение sign » 29.03.2010 11:37:52

У формы нет, есть у компонентов разных и визуальных.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Kire313evz » 29.03.2010 13:27:43

Не, ребята помогите реализовать обработчик, который реагировал на закрытие системы!!!!!!!
Kire313evz
новенький
 
Сообщения: 11
Зарегистрирован: 27.03.2010 12:59:06

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение eevee » 29.03.2010 13:43:11

Присоединяюсь к просьбе :) У меня так и не получилось отловить завершение заботы...

P.S. Вопрос в теме немного неправильный... Close и CloseQuery работают отлично, но они вызываются только тогда, когда Вы сами закрываете программу нормальным способом. Если она убивается сторонним приложением, то должно обрабатываться OnEndCloseSession и иже с ними. Но они нифига не обрабатывают.... Тут, как говорится, либо лыжи не едут, либо .................
eevee
новенький
 
Сообщения: 63
Зарегистрирован: 29.12.2009 17:52:44
Откуда: Саратов

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Brainenjii » 29.03.2010 13:52:42

Код: Выделить всё
Unit Unit1;

{$mode objfpc}{$H+}

Interface

Uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;

Type

  { TForm1 }

  TForm1 = Class(TForm)
    Procedure FormCreate(Sender: TObject);
  Private
    { Private declarations }
    Procedure AppEndSession(Sender: TObject);
  Public
    { Public declarations }
  End;

Var
  Form1: TForm1;

Implementation

{$R *.lfm}

{ TForm1 }

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  Application.OnEndSession := @AppEndSession;
end;

Procedure TForm1.AppEndSession(Sender: TObject);
Var
  aList: TStringList;
Begin
  aList := TStringList.Create;
  aList.Add('Hello');
  aList.SaveToFile('C:\develop\1.txt');
  aList.Free;
End;

End.

После выходу из системы с запущенным приложением обнаруживаю в означенной папке файлик... На линуксе пока не проверить
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Kire313evz » 29.03.2010 13:56:18

Хорошо, проверим! Спасибо!

Добавлено спустя 2 часа 20 минут 17 секунд:
Да, в windows работает!!! Brainenjii, огромное спасибо!!! Спасибо всем!
Kire313evz
новенький
 
Сообщения: 11
Зарегистрирован: 27.03.2010 12:59:06

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение karlson » 15.01.2011 13:01:13

Огромное спасибо
WM_QUERYENDSESSION удалось обойти, а как быть с WM_POWERBROADCAST?
Тоже не отрабатывает, возможно по той же причине что и WM_QUERYENDSESSION.
Оно необходимо для запрещения (или подготовки) перехода компьютера в спящий режим.
Может есть какой-нибудь другой способ?

Заранее благодарен за любую помощь.
karlson
незнакомец
 
Сообщения: 2
Зарегистрирован: 15.01.2011 12:42:38

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение Odyssey » 15.01.2011 15:06:42

Тут написано как правильно ловить WM_XXX сообщения в LCL-приложениях:
http://wiki.lazarus.freepascal.org/Win3 ... our_window
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Форма не обрабатывает события (процедуры) Close, CloseQuery!

Сообщение karlson » 16.01.2011 01:38:38

Вроде работает, спасибо,
но теряется сообщение WM_POWERBROADCAST с параметром PBT_APMQUERYSUSPEND = $0000 и PBT_APMQUERYSTANDBY = $0001, т.е. как раз те самые на которые можно ответить чтобы не переходить в спящий режим.
т.е. приходят остальные:
PBT_APMSUSPEND = $0004;
PBT_APMRESUMESUSPEND = $0007;
PBT_APMRESUMEAUTOMATIC = $0012;

Стоит цель не пустить в спящий и аналогичные режимы.
karlson
незнакомец
 
Сообщения: 2
Зарегистрирован: 15.01.2011 12:42:38


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

Рейтинг@Mail.ru