Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод консольного приложения в окно 
:(
    Опции темы
Stik
Дата 12.10.2004, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.4.2004

Репутация: нет
Всего: 1



Вопрос следующий: моя программа вызывает консольное приложение, которое производит вспомогательное действие. Хотелось бы вывести результат работы консольного приложения в окно моей программы, как это сделано во многих IDE.
1. Не подскажите, каким образом можно этого добиться?
2. Зависит ли это от того, какой функцией я запускаю дочернее приложение или есть универсальный путь? Просто следующих функций запуска дочернего процесса: CreateProcess, ShellExecute, shell, _spawnl мне подходит только _spawnl (в других мне просто не удалось получить код возврата sad.gif).
----
Спасибо!
PM MAIL   Вверх
chipset
Дата 12.10.2004, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Не знаю способов кроме CreateProcess sad.gif
Поставь в STARTUPINFO для hStdOutput, хэндл pipe'а или файла (CreateFile) и синхронизься.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Stik
Дата 12.10.2004, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.4.2004

Репутация: нет
Всего: 1



А как получить код возврата приложения, запущенного CreateProcess'ом?
PM MAIL   Вверх
chipset
Дата 12.10.2004, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 164



Не знаю что ты подразумеваешь под кодом возврата. stena.gif
Примерно то же что int main() возвращает?


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Stik
Дата 12.10.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.4.2004

Репутация: нет
Всего: 1



Цитата(chipset @ 12.10.2004, 14:28)
Не знаю что ты подразумеваешь под кодом возврата.
Примерно то же что int main() возвращает?

Именно. Внешнее приложение возвращает 0 при успешном завершении и положительное значение - при ошибке. И этот код ошибки мне необходим, чтобы вести лог и выводить описание ошибки на русском, так как внешнее приложение выводит только на английском.

PM MAIL   Вверх
Arush
Дата 12.10.2004, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 проверять работает ли программа другим методом.


PM MAIL   Вверх
Adil'
Дата 13.10.2004, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 6
Всего: 15



Цитата(Stik @ 12.10.2004, 15:20)
чтобы вести лог и выводить описание ошибки на русском, так как внешнее приложение выводит только на английском.
Так если ты ловишь stdout проги, ты можешь спокойно идентифицировать ошибку по этому аглицкому тексту...



--------------------
Удачи
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3466 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.