![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно убить процесс?
Grademax © (2006-11-08 05:33:00)Проблемма следующая... Существует exe-файл, который во время своего старта запускает библиотеку DLL. Можно ли "убить" exe так, чтобы DLL осталась в памяти?
Если не сложно, то пример... :)
Anatoly Podgoretsky (2006-11-08 13:10:00) [1]> Сергей М. (08.11.2006 12:51:10) [10]
Наверно нельзя говорить.
Сергей М. (2006-11-08 12:51:00) [2]
> Anatoly Podgoretsky © (08.11.06 12:15) [9]
> еще интереснее
В [5] я уже поинтересовался ..
Молчит ведь как партизан на допросе)
Anatoly Podgoretsky (2006-11-08 12:15:00) [3]> Сергей М. (08.11.2006 10:58:08) [8]
А еще интереснее зачем ДЛЛ должна остаться запущеной после закрытия процесса.
Сергей М. (2006-11-08 10:58:00) [4]
> Grademax (08.11.06 10:19) [6]
Во-первых, не надо так кричать - тебя замечательно слышно.
Во-вторых, справку по этим ф-циям ты уже проштудировал ? Тебе там все понятно ?
Ketmar (2006-11-08 10:51:00) [5]>[2] Grademax 8-Nov-2006, 08:58
>Так вот, если средствами Windows убить первый exe, то
>процесс запущенный DLL-кой продолжает стабильно работать.
>Моя задача убить первый exe ПРОГРАМНО!
ой. а винды это делают путём экзорцизма?
>[6] Grademax 8-Nov-2006, 10:19
>КАК НАДО СДЕЛАТЬ ?
ты не поверишь, но в [5] тебе уже рассказали. попробуй таки почитать внимательно.
Grademax (2006-11-08 10:19:00) [6]А вот с этого места поподробнее... Я ведь упоминал о кривых руках... :-)
КАК НАДО СДЕЛАТЬ ?
Сергей М. (2006-11-08 10:15:00) [7]
> если средствами Windows убить первый exe, то процесс запущенный
> DLL-кой продолжает стабильно работать
Почему бы ему не продолжать работать ? Не вижу оснований для удивления по этому поводу ...
> Результат - ничего не вышло :( Прецесс не умирает
С чего бы ему умирать ?
Ты в ф-циях OpenProcess() и TerminateProcess() манипулируешь каким-то невесть откуда взявшимся handleWindow_exe1, в то время как 1-я ф-ция требует Id процесса и возвращает его хэндл, а 2-я терминирует процесс, если ей передан этот самый хэндл .
И непонятно, причем здесь "чтобы DLL осталась в памяти" ? Эта DLL, будь она хоть в памяти хоть на Луне, не имеет ни малейшего отношения к задаче терминирования процесса.
Grademax (2006-11-08 09:12:00) [8]>Орион ©
>Кстпти, что означает "запускает библиотеку DLL."?
Согласен, промашка вышла... Пусть будет - подключает DLL.
>внедри свою dll в какой-нить процесс.
А зачем?
Чую проблему можно решить 2-3 строчками в программе. Только вот пока не знаю как...
Орион (2006-11-08 09:02:00) [9]внедри свою dll в какой-нить процесс.
Кстпти, что означает "запускает библиотеку DLL."?
Grademax (2006-11-08 08:58:00) [10]Распишу подробнее...
Первый exe-файл запускает библиотеку DLL. Внутри DLL находится видимо ещё один exe, который запускает эта библиотека (во всяком случае этот второй exe или процесс запущенный DLL-кой, не знаю как лучше обозвать, отображается в Диспетчере задач [вкладка ПРИЛОЖЕНИЯ], даже иконка отображается :).
Так вот, если средствами Windows убить первый exe, то процесс запущенный DLL-кой продолжает стабильно работать.
Моя задача убить первый exe ПРОГРАМНО!
Пробовал сделать это так:
Вариант 1
OpenProcess(PROCESS_TERMINATE, True, handleWindow_exe1);
TerminateProcess(handleWindow_exe1,0);
Вариант 2
SendMessage(handleWindow_exe1,WM_CLOSE,0,0);
Результат - ничего не вышло :( Прецесс не умирает...
Вывод - Всему виной кривые руки ;) Срочно требуется помощь костоправа...
Сергей М. (2006-11-08 08:12:00) [11]
> Можно ли "убить" exe так, чтобы DLL осталась в памяти?
Нельзя.