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


Автор: DriveSoftware 17.1.2004, 23:44
О собственно как узнать программе что ее закрывают из дистпетчера задач, т.е. через
Ctrl+Alt+Del

Автор: Vex 18.1.2004, 00:41
Сначало WM_CLOSE
Потом WM_DESTROY - окноуже невидимо, но еще активно
Добивается приложение сообщением WM_NCDESTROY smile.gif

Автор: DriveSoftware 18.1.2004, 00:54
Vex а как тогда при завершении винды?

Автор: Vex 18.1.2004, 01:31
Цитата
Vex а как тогда при завершении винды?


Не знаю, поищи утилитки по типу Spy++. которые сохраняют логи.

Автор: Cashey 18.1.2004, 01:46
Если тебе нужно обработать завершение работы приложения используй конструкцию
Код
 if application.Terminated then

а если тебе надо узнать именно закрытие аварийное, а не стандартное, тогда, наверное, лучше так: во всех предусмотренных закрывающих методах присваеваешь какой-нибудь переменной значение true и дальше
Код
var closed : Boolean;
..................................................................................
procedure TForm1.FormDestroy(Sender: TObject);
begin
 if closed = false and application.Terminated then
 application.MessageBox('Закрываемся','Выход из программы');

end;

таким образом ясно, что выход аварийный и нужно его как-то обработать
прим. закрытие крестиком - тоже будет считаться аварийным.

Автор: <Spawn> 18.1.2004, 06:20
Цитата(DriveSoftware @ 17.1.2004, 16:54)
Vex а как тогда при завершении винды?

попробуй WM_QUERYENDSESSION

Автор: Полудненко Олег 18.1.2004, 10:07
DriveSoftware Поидее в любом случае возникает собатие CloseQuery, а затем OnClose

Автор: x77 18.1.2004, 14:20
это делается путём установки ExitProc. в ней проверяешь две переменные: ExitCode и ErrorAddr.

1. в случае нормального завершения: ExitCode = 0, ErrorAddr = nil

2. в случае завершения по Halt: ExitCode содержит значение, переданное в Halt. Соответствует PostQuitMessage (ExitCode), причём Application.Terminate соответствует PostQuitMessage (0), ErrorAddr = nil.

3. в случае завершения в результате ошибки: ExitCode - код ошибки, ErrorAddr: адрес ошибки (т.е. не равен nil)

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