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