|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.08.2012, 09:21 | #1 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Запуск и контроль чужой программы
Доброго всем времени! Неподскажите как можно запустить чужую программу выделить ей память и при завершении работы моей программы чужая тоже завершалась т.е уничтожалась бы выделенная память при закрытии моей то естественно чужая завершалась бы тоже. Может как то через процессы запущенные CreateProcess но тоже неподходит чужая программа так и остается загружена когда мою убивают, WinExec и ShellExecute вообще отпадают.
Контроль через системные соообщения тоже неподошло, WM_CLOSE и WM_DESTROY неловится при принудительном завершении моей программы. Заранее спасибо! Последний раз редактировалось Aliens_wolfs; 29.08.2012 в 09:28. |
29.08.2012, 10:30 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
про контроль советую почитать про Jobs.
а вот про завершение вместе с вами, к сожалению не знаю.. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.08.2012, 10:31 | #3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
хм.. CreatePocess потом WaitForSingleObject(ждите когда созданНый процесс отработает),
затем в OnCloseQuerty сами посылаем WM_DESTROY или TerminateProcess процессу, поток сам закроется(этого сами ждем) и потом Action:=caFree. Последний раз редактировалось Человек_Борща; 29.08.2012 в 10:51. |
29.08.2012, 10:43 | #4 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Спасибо за советы! ждать процесс WaitForSingleObject и когда запустится WaitForInputIdle у меня это работает, но меня интересует на оборот, когда мою программу принудительно завершат убьют мой процесc чтобы и чужая завершилась.
При принудительном завершении не срабатывает сообщение WM_DESTROY Думаю попробовать через DuplicateHandle унаследовать чужой дескриптор потом когда мой убьют дескриптор то чужой должен закрыть программу так как дублируются Последний раз редактировалось Aliens_wolfs; 29.08.2012 в 11:10. |
29.08.2012, 10:53 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
При TerminateProcess вы ничего из ring3 не сделаете для себя.
Возможно при CreateProcess нужно указать создавать CHILD процесс по отношению к вам, есть мнение что если убить родительский, то все порожденные от него, тоже вымрут. |
29.08.2012, 10:57 | #6 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Тоже пробовал создавал родительский нывышло, все равно загружена чужая когда мою убивают, думаю тут может как то память выделить ее сделать общей для своей и для чужой, когда одного завершат память потеряет структуру будет ошибка и они оба завершатся.
В общем как то нужно прикрутить чужую программу к своей как будто один процесс, чтобы была двусторонняя зависимость на уничтожение Последний раз редактировалось Aliens_wolfs; 29.08.2012 в 11:14. |
29.08.2012, 11:14 | #7 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Стандартный загрузочник сам распределяет процессы по разным облостям памяти.
Есть мнение что вам нужно копать в сторону запуска из памяти, читайте/ищите инфу об этом. В любом случае придется делать тоже, что делает загрузочник. |
29.08.2012, 11:24 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
http://www.delphilab.ru/content/view/18/46/
глава 5, почитайте, может найдете что полезного. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.08.2012, 11:29 | #9 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Спасибо за советы!!! Буду искать и разбираться дальше.
За книгу отдельное спасибо много полезного и то что нужно! Последний раз редактировалось Aliens_wolfs; 29.08.2012 в 12:22. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C#] Запуск чужой программы | JonMagon | Помощь студентам | 9 | 19.08.2011 14:18 |
Запуск чужой программы как сервиса | Человек_Борща | Общие вопросы Delphi | 9 | 08.02.2011 13:44 |
Как реализовать запуск и контроль нескольких однотипных потоков. | Son | Общие вопросы Delphi | 5 | 29.04.2010 08:40 |
Текст из RichView чужой программы | W0LF | Общие вопросы Delphi | 4 | 20.02.2010 17:12 |
Запуск своего модуля из чужой программы | Volkogriz | Общие вопросы Delphi | 7 | 16.10.2007 05:19 |