Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2018, 14:47   #1
noskill24
 
Регистрация: 09.11.2018
Сообщений: 8
По умолчанию СreateProcess из Win32Gui с ожиданием завершения.

Я новичек в win32gui и мой вопрос такой:

Есть простое win32gui приложение с главным окном (и соответсвенно с message loop-ом). С его принципом работы я в принципе разобрался.

1. Из него требуется запустить консольное приложение (например CreateProcess), определить когда оно зваершилось и получить его "exit code" в родительском win32gui. Как это сделать? Можете описать принцип и какие функции мне гуглить?

2. Также нужна следующая функция - во время работы консольного приложения нужна возможность из родительского приложения скрывать или показывать окно консольного приложения (при нажатие какой-нибудь кнопки, например). Как скрывать или показывать окно дочернего процесса во время исполнения?
noskill24 вне форума Ответить с цитированием
Старый 09.11.2018, 14:57   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от noskill24 Посмотреть сообщение
1. Из него требуется запустить консольное приложение (например CreateProcess), определить когда оно зваершилось и получить его "exit code" в родительском win32gui. Как это сделать? Можете описать принцип и какие функции мне гуглить?
Открываете офф доку по функции https://docs.microsoft.com/en-us/win...createprocessw
Читаете ее. В разделе возвращаемое значение видите вместе с сылкой
Цитата:
To get the termination status of a process, call GetExitCodeProcess.
Читаете дальше и видите ссылку на пример https://docs.microsoft.com/en-us/win...ting-processes
Там видите еще одну функцию, с которой ждут завершения процесса, https://docs.microsoft.com/en-us/win...orsingleobject

Цитата:
Сообщение от noskill24 Посмотреть сообщение
2. Также нужна следующая функция - во время работы консольного приложения нужна возможность из родительского приложения скрывать или показывать окно консольного приложения (при нажатие какой-нибудь кнопки, например). Как скрывать или показывать окно дочернего процесса во время исполнения?
https://docs.microsoft.com/en-us/win...ser-showwindow
p51x вне форума Ответить с цитированием
Старый 09.11.2018, 17:18   #3
noskill24
 
Регистрация: 09.11.2018
Сообщений: 8
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Открываете офф доку по функции https://docs.microsoft.com/en-us/win...createprocessw
Читаете ее. В разделе возвращаемое значение видите вместе с сылкой

Читаете дальше и видите ссылку на пример https://docs.microsoft.com/en-us/win...ting-processes
Там видите еще одну функцию, с которой ждут завершения процесса, https://docs.microsoft.com/en-us/win...orsingleobject


https://docs.microsoft.com/en-us/win...ser-showwindow
1. Ну и как WaitForSingleObject использовать с message-loop в родительском приложении?

2. Ну и как получить hwnd дочернего процесса?
noskill24 вне форума Ответить с цитированием
Старый 09.11.2018, 17:20   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Как обычно. Проверяете, если не готово, то крутитесь дальше. Проблема в чем?
p51x вне форума Ответить с цитированием
Старый 09.11.2018, 17:29   #5
noskill24
 
Регистрация: 09.11.2018
Сообщений: 8
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Как обычно. Проверяете, если не готово, то крутитесь дальше. Проблема в чем?
А если я, допустим, хочу запускать рандомное количество консолей. Но по завершении работы каждой консоли, получать уведомление или вызов какой-нибудь callback ф-ии?
noskill24 вне форума Ответить с цитированием
Старый 09.11.2018, 17:36   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Самый простой вариант: запустить поток, пусть он ждет и сигналит. Можете даже запуск делать из потока.
p51x вне форума Ответить с цитированием
Старый 09.11.2018, 17:47   #7
noskill24
 
Регистрация: 09.11.2018
Сообщений: 8
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Самый простой вариант: запустить поток, пусть он ждет и сигналит. Можете даже запуск делать из потока.
А сигналит как лучше? USER-Месседжем в главное окно?
noskill24 вне форума Ответить с цитированием
Старый 09.11.2018, 17:49   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Зависит от задачи. Если callback, то может вообще просто вызова его хватит.
p51x вне форума Ответить с цитированием
Старый 09.11.2018, 17:53   #9
noskill24
 
Регистрация: 09.11.2018
Сообщений: 8
По умолчанию

А hwnd дочерней консоли из handle можно плучить только поиском? Еще же надо дождаться, чтобы окно это создалось...

А есть вариант создать "как-бы свою дочернюю консоль" и сразу иметь ее hwnd, а в ней запустить процесс?
noskill24 вне форума Ответить с цитированием
Старый 09.11.2018, 18:01   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от noskill24 Посмотреть сообщение
А hwnd дочерней консоли из handle можно плучить только поиском? Еще же надо дождаться, чтобы окно это создалось...
КрейтПроцесс же хендлы возвращает.

Цитата:
Сообщение от noskill24 Посмотреть сообщение
А есть вариант создать "как-бы свою дочернюю консоль" и сразу иметь ее hwnd, а в ней запустить процесс?
Консоль-то создать можно. Но вы уверены, что она вам нужна? Почему просто сразу нужный процесс не запускать?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ожидание завершения потоков Voody Общие вопросы Delphi 11 14.06.2016 06:10
Ожидание завершения DrBAXA Общие вопросы Delphi 8 26.01.2013 21:42
Не ждет завершения процедуры. myg Общие вопросы Delphi 8 18.01.2012 19:57
Как правильно запустить внешнюю программу с ожиданием ? oren_yastreb Общие вопросы Delphi 1 22.11.2010 18:26