![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
sneJok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Нужно отловить событие при завершении работы приложения (Диспетчер задач-Процессы-Завершить процесс).
Цель задачи - при завершении процесса номер 1, завершить еще и процесс номер 2. |
|||
|
||||
Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: нет Всего: 7 |
А сам процесс 1 перед смертью не может убить и процесс 2?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. ![]() Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
нужно добавить функциональность мониторинга состояния "напарника" в оба приложения. альтернативой могут являться всяческие глобальные перехваты api, сервисы, драйверы - но вряд ли оно того стОит.
а проще всего - поставить nnCron и сделать в нем соответствующее задание. таким образом ты используешь уже готового наблюдателя, который, к тому же, еще много чего умеет... ![]() нет. "завершить процесс" - это как выстрел в затылок: убиваемый процесс не получает никаких уведомлений и ничего не может сделать. |
|||
|
||||
sneJok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Мониторинг, к сожалению, не подойдёт, т.к. исходного кода процесса 2 нет.
Есть еще каки-либо альтернативные методы? Процесс 2 запускаеться непосредственно только через процесс 1. Как бы их связать... Это сообщение отредактировал(а) sneJok - 21.12.2007, 16:07 |
|||
|
||||
dumb |
|
||||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
![]() сразу пара вариантов всплыли. один - через job-object'ы + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE, но оно только начиная с XP поддерживается. а второй - самый подходящий: запускать чайлд-процесс с флагом отладки(DEBUG_PROCESS). набросал тебе пример. на дельфи. бррр... простите, дельфисты, вырвалось... ![]() Unit1.pas:
Unit2.pas:
|
||||||
|
|||||||
sneJok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Спасибо огромное! Буду разбираться.
|
|||
|
||||
sneJok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Решил сделать через Job'ы.
Код -
Посмотрел pi.hProcess (по сути PID?), отличается от настоящего значения PID. В чем ошибка? Это сообщение отредактировал(а) sneJok - 25.2.2008, 19:14 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
![]()
|
||||
|
|||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
Создай процесс 3, который и будет тем самым монитором первых двух процессов. Убит процесс1, процесс3 убивает процесс2 и убивается сам ![]() -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
sneJok |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 1.10.2007 Репутация: нет Всего: нет |
Большое спасибо за советы!
Подскажите, какую нужно подключить библиотеку для работы с Job функциями для D7? |
|||
|
||||
Rennigth |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
||||
|
|||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |