![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
закрытие приложения
defen © (2009-11-10 12:09:00)Доброго времени суток. Подскажите, пожалуйста, какое событие ( команда) возникает (выполняется) при закрытии приложения через диспечер задач. и как можно это обрботать? вывести сообщение, например.
Dennis I. Komarov (2009-11-10 16:29:00) [1]
> буду решать проблемму другим путем.
X, Y, Z...
defen (2009-11-10 16:06:00) [2]кстати, искал книгу Рихтера по API/ не могу найти рабочую ссылку. может кто имеет? или на мыло
defen (2009-11-10 16:04:00) [3]Спасибо, я видел. я имел ввиду, что программа не успевает самаза собой истить. извините, если ввел в заблуждение. Всем спасибо. буду решать проблемму другим путем. удачи
Сергей М. (2009-11-10 16:00:00) [4]Смотришь в книгу - видишь фигу ?)
Цитата оттуда:
Процесс действительно не имеет ни малейшего шанса самому провести очистку, но операционная система высвобождает все принадлежавшие ему ресурсы: возвращает себе выделенную им память, закрывает любые открытые файлы, уменьшает счетчики соответствующих объектов ядра и разрушает все его User- и GDI-объекты.
По завершении процесса (не важно каким способом) система гарантирует: после него ничего не останется — даже намеков на то, что он когда-то выполнялся. Завершенный процесс не оставляет за собой никаких следов.
defen (2009-11-10 15:58:00) [5]http://forum.sources.ru/index.php?showtopic=152254&view=showall&hl=
mess №4
Сергей М. (2009-11-10 15:54:00) [6]
> без освобождения памяти и т.д.
Где ты такое вычитал ?
defen (2009-11-10 15:53:00) [7]А что с TerminateProcess()? я тут почитал, что функция экстренно завершает приложение без освобождения памяти и т.д
Игорь Шевченко (2009-11-10 15:50:00) [8]WM_CLOSE посылается главному окну приложения (точнее, не совсем главному, но это не очень важно) при снятии задачи через вкладку "Приложения". Его при этом можно обработать (даже не его, а WM_CLOSEQUERY)
При снятии через вкладку "Процессы" никаких сообщений не посылается
Сергей М. (2009-11-10 15:48:00) [9]
> WM_CLOSE в каком случае подаётся?
Оно посылается жертве только если она гуевая и юзер райткликнул на иконке какого-либо ее окна, представленного в таскбаре, выбрав меню "Закрыть".
clickmaker (2009-11-10 15:44:00) [10]> Подскажите, пожалуйста, какое событие ( команда) возникает
> (выполняется) при закрытии приложения через диспечер задач
TerminateProcess()
defen (2009-11-10 15:44:00) [11]печально... ну а WM_CLOSE в каком случае подаётся?
Сергей М. (2009-11-10 15:41:00) [12]
> система подает команду приложению, чтобы та грохнулась?
Система просто "грохает" процесс - и все.
Какаой смысл давать команды потенциальному трупу ?)
defen (2009-11-10 15:40:00) [13]хм.... Ну а как процесс завершается? система подает команду приложению, чтобы та грохнулась?
Dennis I. Komarov (2009-11-10 15:36:00) [14]так уже грохнули
defen (2009-11-10 15:31:00) [15]ну а на последних издыханиях?
Dennis I. Komarov (2009-11-10 15:30:00) [16]
> может я снова не до конца выразил суть? или мой вопрос
> безсмысленный?
Ну как труп будет чего-то обрабатывать?
defen (2009-11-10 15:27:00) [17]может я снова не до конца выразил суть? или мой вопрос безсмысленный?
Сергей М. (2009-11-10 15:15:00) [18]
> вроде бы WM_QUIT посылаетя
Не WM_QUIT, а WM_CLOSE
Но это сути не меняет, ибо
> как можно это обрботать? вывести сообщение, например
умнее ты ничего не придумал.
defen (2009-11-10 15:12:00) [19]вроде бы WM_QUIT посылаетя для закрытия программы, но если не принудительно, ну а выкашивание процесса с помощью хендела происходит. ну как-то так. подскажите, если в чем не прав...
defen (2009-11-10 15:03:00) [20]умнее ни чего не придумал?