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

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

Перехват закрытия приложения? [D5, D6, D7, NT4, Win2k, WinXP]


ZbarKiy ©   (2006-02-02 17:45:00) 

Как перехватить закрытие собственного приложения?
P.S. FormClose(Query) не предлагать.


Комбинатор   (2006-02-03 11:06:00) [1]

Можно частично защитить процесс добавив привилегии (спасёт от деспетчера), но c Debug привилегиями убьётся молча (Far убьёт тока так).
Можно ещё при создании процесса в нём создать рабочий процесс и потерять на него ссылку убив родительский, но )))) Wind-a не закроется тогда)))


kaZaNoVa   (2006-02-03 10:34:00) [2]

по сабжу ..   FormCloseQueryпоможет, но от TerminateProcessНИЧЕГО не спасёт .. так как эта функция не спрашивает ничего . .а просто убивает ...


Комбинатор   (2006-02-03 10:18:00) [3]

Так и не понял почему не можешь  FormCloseQuery использовать.

Переопределяй WinProc... лови WM_CLOSE в ней....главное не забуть в конце inherited))


TUser   (2006-02-03 10:17:00) [4]

Через диспетчер - оно никуда может не попасть, т.к. система может прибить выполнение приложения совсем. Система посылает приложению WM_CLOSE, а если не закрывается - прекращает выполнение любых команд приложения и вытирает его из памяти. На то и придумано, чтобы повисшее выкидывать - тут уж ничего не сделать.


ZbarKiy   (2006-02-03 10:10:00) [5]

Дело обстоит так. На FormClose(Query) стоит отслеживание на закрытие формы ( да! И вот еще что, на событие FormCreate вписан не большой код
ShowWindow(Application.Handle,SW_HIDE) - одним словом она не видна)
В принципе по оканчанию работы Window она выполняет все необходимые задачи возложенные на событие FormClose(Query), но при вызове диспетчера задач и далее завершение процесса на событие  FormClose(Query) она не попадает. Ну в двух словах пока все.


Gero   (2006-02-02 18:41:00) [6]

У приложения нет понятия «закрытие». Если по каким-то причинам не подходит отлов закрытия главной формы, более четко излагай вопрос.


GuAV   (2006-02-02 18:37:00) [7]


> P.S. FormClose(Query) не предлагать.

Почему FormClose(Query) не подходит ?


TUser   (2006-02-02 18:36:00) [8]

> Как перехватить закрытие собственного приложения?

В Source проекта написать нужный код, защитив через try ... finally

Ловить WM_CLOSE(QUERY) для главной формы.


Наверх

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