![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Stik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.4.2004 Репутация: нет Всего: 1 |
Вопрос следующий: моя программа вызывает консольное приложение, которое производит вспомогательное действие. Хотелось бы вывести результат работы консольного приложения в окно моей программы, как это сделано во многих IDE.
1. Не подскажите, каким образом можно этого добиться? 2. Зависит ли это от того, какой функцией я запускаю дочернее приложение или есть универсальный путь? Просто следующих функций запуска дочернего процесса: CreateProcess, ShellExecute, shell, _spawnl мне подходит только _spawnl (в других мне просто не удалось получить код возврата ![]() ---- Спасибо! |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Не знаю способов кроме CreateProcess
![]() Поставь в STARTUPINFO для hStdOutput, хэндл pipe'а или файла (CreateFile) и синхронизься. --------------------
|
|||
|
||||
Stik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.4.2004 Репутация: нет Всего: 1 |
А как получить код возврата приложения, запущенного CreateProcess'ом?
|
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Не знаю что ты подразумеваешь под кодом возврата.
![]() Примерно то же что int main() возвращает? --------------------
|
|||
|
||||
Stik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.4.2004 Репутация: нет Всего: 1 |
Именно. Внешнее приложение возвращает 0 при успешном завершении и положительное значение - при ошибке. И этот код ошибки мне необходим, чтобы вести лог и выводить описание ошибки на русском, так как внешнее приложение выводит только на английском. |
|||
|
||||
Arush |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.11.2003 Репутация: 1 Всего: 1 |
Я так понимаю что надо использовать GetExitCodeProcess:
BOOL GetExitCodeProcess( HANDLE hProcess, LPDWORD lpExitCode); If the specified process has not terminated, the termination status returned is STILL_ACTIVE. If the process has terminated, the termination status returned may be one of the following: The exit value specified in the ExitProcess or TerminateProcess function. The return value from the main or WinMain function of the process. The exception value for an unhandled exception that caused the process to terminate. С учетом следующего: Warning If a process happens to return STILL_ACTIVE (259) as an error code, applications that test for this value could end up in an infinite loop. возможно имеет смысл при получении STILL_ACTIVE проверять работает ли программа другим методом. |
|||
|
||||
Adil' |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
-------------------- Удачи |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |