Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не выгружается приложение под XP [D5, WinXP]


m52 ©   (2005-01-28 11:13:00) 

Здравствуйте!
-------------
Когда моё приложение запущено и пытаемся
завершить работу Windows, то сделать этого не удается.
Т.к. мое приложение имеет коннект с mdb-базой, то я
решил корректно обработать FormCloseQuery, где написал:

   try // Здесь корректно отключаемся от БД
     if cn.Connected then cn.Connected:=false;
     CanClose := true;
   finally
     Application.Terminate; // терминейтим приложение
   end;

Приложение стало выгружаться из памяти при завершении Windows, но Windows по-прежнему не завершает работу. Чтобы Windows завершило работу, нужно еще раз сделать завершение работы Windows.

Вопрос: как сделать, чтобы при завершении работы Windows, моё приложение завершалось, после чего происходила перезагрузка Windows? Под win2000 все работает нормально.


dimaxx   (2005-01-28 12:54:00) [1]

Нафига? Проге и так послали запрос на закрытие. Указывая CanClose:=true мы подтверждаем, что нас мона закрыть.


m52   (2005-01-28 11:50:00) [2]

Скажите, а терминейтить приложение в этом обработчике надо или нет?


m52   (2005-01-28 11:49:00) [3]

Большое спасибо. Позже попробую.


Kerk   (2005-01-28 11:41:00) [4]

m52   (28.01.05 11:40) [3]
Вместо точек надо что-то еще вписать?


конечно.. процедура будет вызываться при завершении винды.. закрывай там соединение и все такое


m52   (2005-01-28 11:40:00) [5]

А что такое три точки после Message.Result := 1; ?
Вместо точек надо что-то еще вписать?

И что означает Message.Result:=1 ?


xShadow   (2005-01-28 11:28:00) [6]

попробуй обработать сообщение о завершении работы Windows
 private
   { Private declarations }
   procedure WMQueryEndSession( var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
...
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
  inherited;
  Message.Result := 1;
  ...
 
end;


Kerk   (2005-01-28 11:26:00) [7]

если мне не изменяет склероз.. надо ловить сообщение WM_QUERYENDSESSION


Наверх

Титульная страница Поиск, карта сайта Написать письмо