Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как программе узнать что ее... ...завершают через деспетчер задач 
:(
    Опции темы
DriveSoftware
Дата 17.1.2004, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



О собственно как узнать программе что ее закрывают из дистпетчера задач, т.е. через
Ctrl+Alt+Del
PM MAIL WWW ICQ   Вверх
Vex
Дата 18.1.2004, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



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


--------------------
Слава Україні.
PM   Вверх
DriveSoftware
Дата 18.1.2004, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 17.3.2003

Репутация: нет
Всего: 4



Vex а как тогда при завершении винды?
PM MAIL WWW ICQ   Вверх
Vex
Дата 18.1.2004, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
Vex а как тогда при завершении винды?


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


--------------------
Слава Україні.
PM   Вверх
Cashey
Дата 18.1.2004, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



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

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

end;

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


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
<Spawn>
Дата 18.1.2004, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Цитата(DriveSoftware @ 17.1.2004, 16:54)
Vex а как тогда при завершении винды?

попробуй WM_QUERYENDSESSION


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Полудненко Олег
Дата 18.1.2004, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



DriveSoftware Поидее в любом случае возникает собатие CloseQuery, а затем OnClose
PM MAIL   Вверх
x77
Дата 18.1.2004, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



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

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

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

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

Это сообщение отредактировал(а) x77 - 18.1.2004, 14:21


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1183 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.