Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно убить процесс?


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 осталась в памяти?


Нельзя.


Наверх

Титульная страница Поиск, карта сайта Написать письмо