![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| vertex_ua |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 25.4.2007 Репутация: нет Всего: нет |
Добрый день. Пишу код, который сам компилирует другую программу компилятором dcc32 и запускает ее на выполнение. При этом не дает ей работать дольше чем 4000 мс. После работы программы возвращются строки good, not compiled, runtime или timeout. При первом щелчке на кнопке получаю значение good. То-есть программа скомпилировалась, была запущена и отработала за допустимый период времени. При втором щелчке программа выводит not compiled. Проблема в том, что первый раз программа закончила стою работу, ее уже нет в списке задач, но по неизвестной причине Windows запрещает модфикацию EXE файла, поэтому компилятор не может завершить компиляцию. Помогите, пожалуйста, если вам знакома эта проблема. Привожу код
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
vertex_ua, Код не проверял, но есть подозрение что все-таки хендл процесса полученный после CreateProcess не имеет прав на TerminateProcess. Выдержка из MSDN:
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
vertex_ua, Вообщем перед TerminateProcess надо отладку ведь останавливать
Вот этим к примеру DebugActiveProcessStop. Вообщем примерно тякь:
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Ну путай человека, он же Parent созданного процесса, зачем тут сдался DebugActiveProcessStop? vertex_ua, чтобы закрыть процесс под отладкой надо уничтожить его хэндлы, а убить процесс, который находится под отладкой стандартными способами конечно нельзя: CloseHandle(pi.hProcess); CloseHandle(pi.hThread); Это сообщение отредактировал(а) W4FhLF - 28.4.2007, 15:04 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Rennigth |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
W4FhLF,
хм, у меня без
выполнив просто
процесс не умирал. А мой пример по сути аналогичен примеру автора. Может я в чем то не прав, но попробуй мой пример без DebugActiveProcessStop. Процесс так и останется жить пока не завершиться вызвавший его. -------------------- (* Honesta mors turpi vita potior *) |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Туплю, Rennigth, ты прав, теряю квалификаю блин
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
Я просто этим вопросом до этого никогда не занимался, а на скорую руку все что нашел в мсдне так это DebugActiveProcessStop. Да и вроде как как было написано ее предназначение как раз в этом.
Могу ошибаться, пошел перечитывать Добавлено через 1 минуту и 6 секунд о гыгыг... уже не нужно... -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |