Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Жизня проги


Автор: h2o 14.11.2005, 16:44
Скажем при включении компа я прогу запустил. А при выключении что будет? винда всем посылает сообщение о завершении работы, и все проги что-то делают? и мне это тоже нужно? а елсли у меня нет обработки этого сообщения, то моя прога будет завершена неправильно, тоесть её винда убьёт? тоесть нужно встраивть в прогу отлов сообщений винды???

если да, то как? я знаю что есть сообщение какое-то которое винда посылает, но вот где, как и что с ним делать я не знаю!

Автор: DemoCode 14.11.2005, 16:49
Обрабатывай OnCloseQuery.

Автор: z-END 14.11.2005, 17:13
Цитата(DemoCode @ 14.11.2005, 16:49)
Обрабатывай OnCloseQuery.

этот обработчик вызывается не вовсех случаях...

Автор: Poseidon 14.11.2005, 18:01
Цитата(h2o @ 14.11.2005, 16:44)
я знаю что есть сообщение какое-то которое винда посылает, но вот где, как и что с ним делать я не знаю!
Такое сообщение есть, и даже не одно, а два. Это WM_QUERYENDSESSION и WM_ENDSESSION. А обрабатывато нужно (можно) так:

Код
private 
    procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION; 
... 
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession); 
begin 
// что-то делаем перед выключением Винды. Ну там данные сохраняем или еще что.
  Msg.Result := 1; 
end;

Автор: h2o 15.11.2005, 09:06
Poseidon дак а мне обязательно это встраивать? а что будет если я это не сделаю. зачем это вообще нужно?

Автор: Alexeis 15.11.2005, 10:46
Совсем не обязательно если нет дополнительных процесов
или текущих данных которые должны быть сохранены

Автор: h2o 15.11.2005, 12:01
значит надо!

всем спасибо! все понятно! всё работает!

Автор: Poseidon 15.11.2005, 18:05
Цитата(alexeis1 @ 15.11.2005, 10:46)
Совсем не обязательно если нет дополнительных процесов
или текущих данных которые должны быть сохранены


Цитата(h2o @ 14.11.2005, 16:44)
винда всем посылает сообщение о завершении работы, и все проги что-то делают? и мне это тоже нужно?
Для того, что бы что-то сделать ОБЯЗАТЕЛЬНО! Может быть немного в другом исполнении, но суть должна быть та.

Автор: Bibimij 15.11.2005, 20:56
Цитата(DemoCode @ 14.11.2005, 16:49)
Обрабатывай OnCloseQuery.

ДА! Именно так! smile
2Z_END: ДА! И правда не всегдасрабатывает! Например, когда прога завершается Fatal Errorom.... smile Можно обрабатывать OnDestroy, в конце концов! smile

Автор: DemoCode 15.11.2005, 21:13
Я всегда OnCloseQuery обрабатываю и проблем не встречал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)