| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Создание дочернего процесса |
| Автор: Defiline 27.7.2011, 23:10 |
| Здрасте Проблема: Дело вот какое привело меня сюда: Есть консольная утилита, исходных кодов которой я не имею. Её запускаем из своего приложения с помощью CreateProcess, она выполняет определенные операции в фоновом режиме длительное количество времени пока мы не захотим её закрыть. Всё работает замечательно до определенного момента, а именно: при завершении сеанса Windows эта утилита убивается напрочь, и все её рабочие данные теряются (если закрывать из приложения - всё сохраняется). Задача в том, чтобы корректно обработать закрытие при завершении сеанса; для этого я ловлю сообщение в своём приложении. Но! Утилита убивается операционной системой ДО того, как передается управление моему приложению. Вопрос: Возможно ли (и если да, то как) запустить дочернее приложение таким образом, чтобы Windows в первую очередь посылала сообщение моему приложению, которое корректно на него отреагирует, а не убивала сначала процесс, который я создаю, а потом уже передавала управление мне. |
| Автор: Defiline 28.7.2011, 09:34 |
| Не люблю апать темы, но ограничение по времени заставляет это делать. Сейчас рассматриваю как вариант создание сервиса, но не факт, что на компьютере кто-нибудь даст права адимнистратора. |
| Автор: asmdzen 28.7.2011, 11:19 |
какое именно сообщение? http://msdn.microsoft.com/en-us/library/aa376876.aspx |
| Автор: Defiline 28.7.2011, 17:14 | ||
Получаю WM_QUERYENDSESSION. Но проблема не в том, чтобы его получить, а в том, что запускаемое моим приложение убивается раньше родительского, в результате мне с этим сообщением уже нечего делать. |
| Автор: bass 28.7.2011, 18:24 | ||||
Я бы похукал бы приложение, в нем бы подменил винпрок..... Ну а там воля ваша что делать с сообщением завершение виндовс.......... Только ваше приложение тоже не должно раньше завершиться а то хук тоже исчезнет..... Только для хука тоже права скорей админские потребуються шас не компитентен в этом вопросе....... Хотя если приложение в пользоательском режиме то может и получиться если на него ставить......... |
| Автор: asmdzen 28.7.2011, 20:56 |
| SetProcessShutdownParameters(0x3FF, 0x00000001); должно помочь http://msdn.microsoft.com/en-us/library/ms686227%28v=vs.85%29.aspx |
| Автор: Defiline 1.8.2011, 15:46 |
| Ага, спасибо, проблему решил. Тему пометил решенной. |