Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2013, 01:53   #1
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию Завершение процесса

Всем доброго времени суток. Собственно вопрос, каким образом можно перед завершением процесса выполнить к примеру несколько функций ...

Ну рассматривать случай события OnClose думаю не стоит ... с ним и так всё ясно ...

Интересует завершение программы через диспетчер задач ... Кто может подсказать, возможно ли это выполнить ?
-Jack- вне форума Ответить с цитированием
Старый 26.08.2013, 01:59   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Нужна вторая программа, которая будет следить за этим процессом. Тогда можно что угодно делать: восстанавливать процесс, вешать события на запуск\остановку процесса и.т.д.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 26.08.2013, 02:03   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Из убиваемого процесса думаю что никак, если из диспетчера задач тупо убивают процесс.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2013, 02:04   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
Интересует завершение программы через диспетчер задач ... Кто может подсказать, возможно ли это выполнить ?
Кто ж мешает.

Вариант 1:
Пишем DLL, внедряем в процесс и ловим DLL_PROCESS_DETACH и DLL_THREAD_DETACH. Второго, обычно, хватает.
Оба означают следующее:
1. программа закрывается
2. Кто-то намеренно выгружает вашу DLL, или не дает её внедрить.
3. Куча всяких факторов X...

Вариант 2:
Установка ловушки на NtTerminateProcess или ZwTerminateProcess

Вариант 3:
Пишется ядерных хук на действия над процессом X, или используется EasyHook библиотека(Си++).
Человек_Борща вне форума Ответить с цитированием
Старый 26.08.2013, 02:05   #5
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Но это не решение, само по себе завершение программы не страшно, нужно чтобы перед завершением процесса программа выполнила ряд необходимых функций.

А то, что 2ая программа будет знать, что первая закрыта - не позволит первой выполнить нужные функции ...
-Jack- вне форума Ответить с цитированием
Старый 26.08.2013, 02:07   #6
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Код:
А то, что 2ая программа будет знать, что первая закрыта - не позволит первой выполнить нужные функции ...
Зато ты сможешь заново запустить программу с нужными параметрами, и она выполнит те функции, которые тебе нужны, и чтобы потом закрылась
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 26.08.2013, 02:09   #7
-Jack-
Форумчанин
 
Регистрация: 19.04.2009
Сообщений: 368
По умолчанию

Цитата:
Сообщение от grominfo Посмотреть сообщение
Код:
А то, что 2ая программа будет знать, что первая закрыта - не позволит первой выполнить нужные функции ...
Зато ты сможешь заново запустить программу с нужными параметрами, и она выполнит те функции, которые тебе нужны, и чтобы потом закрылась
Не, эта тема не прокатит ...
-Jack- вне форума Ответить с цитированием
Старый 26.08.2013, 02:10   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

ТС, в вашем случае, только перехват API, т.е. прерываете цепочку API вызовов, делаете дело, продолжаете цепочку и по закрывается.
Человек_Борща вне форума Ответить с цитированием
Старый 26.08.2013, 02:15   #9
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Код:
Не, эта тема не прокатит ...
Тогда тебе даже вариант Борща не подойдёт, так как ты хочешь продолжить выполнение программы перед halt'ом
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 26.08.2013, 03:22   #10
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Уж не вирус ли это какой ни будь, который перед тем как его убьют должен отформатировать диск ?

Других вариантов зачем программа должна что то сделать перед тем как ее намеренно снимают через диспетчер (!), я не вижу.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Завершение процесса romanzi Win Api 11 16.08.2011 16:14
Завершение процесса *stRong* Visual C++ 1 17.02.2011 09:40
Запуск процесса в потоке, завершение процесса в указааноое время, Дайте совет Человек_Борща Общие вопросы Delphi 3 29.08.2010 12:58
завершение процесса jone Общие вопросы Delphi 14 28.10.2008 17:35
Завершение процесса Terran Win Api 3 04.01.2008 12:09