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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2011, 16:49   #1
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию Смертоубийство своего процесса

Здравствуйте, уважаемые.

Есть чужой процесс. В него внедряется моя библиотека.
Из библиотеки вызывается приложение (TApplication).

Как из этой библиотеки и из окна приложения можно убить весь свой процесс, что называется "без лишнего шума" (подразумевается, что у процесса есть два ведущих потока, при завершении одного - второй ругается. нужно чтоб умерли все потоки процесса молча)?

Application.Terminate; прошу не постить, я не полный чайник.

Так же не хочу видеть "приколы" с открытием процесса для PROCESS_ALL_ACCESS или PROCESS_TERMINATE - я итак уже в процессе и имею полный контроль над ним (в том числе захукал некоторые функции).
Спрашиваю не потому, что лень писать, а потому, что не знаю "элегантного" кода.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 21.08.2011, 18:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ExitProcess?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 17:53   #3
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Странным образом окна убиваются, но процесс остается висеть в системе...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 23.08.2011, 18:29   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Попробуйте возспользоваться утилитой PETools и смотрите что происходит с вашим процессом.

В особенности когда:
Цитата:
Странным образом окна убиваются, но процесс остается висеть в системе...

Последний раз редактировалось Человек_Борща; 23.08.2011 в 18:36.
Человек_Борща вне форума Ответить с цитированием
Старый 23.08.2011, 18:58   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Странным образом окна убиваются, но процесс остается висеть в системе...
никто левый не держит открытый хендл на процесс?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2011, 19:05   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Думаю что держит. И этот кто-то живет в самом процессе. МБ хук на что-то не закрыт? Или есть какая-то внешняя программу управляющая dll.
Человек_Борща вне форума Ответить с цитированием
Старый 23.08.2011, 19:26   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Дедлок у вас, о чём MSDN прямо предупреждает:

Цитата:
If one of the terminated threads in the process holds a lock and the DLL detach code in one of the loaded DLLs attempts to acquire the same lock, then calling ExitProcess results in a deadlock
И таки да, придётся использовать OpenProcess/TerminateProcess.
пыщь
JTG вне форума Ответить с цитированием
Старый 23.08.2011, 19:29   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

открывать помоему не надо.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание своего *.project garengobit Помощь студентам 0 30.05.2011 23:30
Приоритет своего приложения SoftKoc Общие вопросы Delphi 9 13.09.2010 15:53
Запуск процесса в потоке, завершение процесса в указааноое время, Дайте совет Человек_Борща Общие вопросы Delphi 3 29.08.2010 12:58
Смена своего IP - адреса. VintProg Свободное общение 58 05.07.2010 16:14
Создание своего класса AlexandrSid Общие вопросы Delphi 3 19.05.2008 13:28