![]() |
|
|
![]()
|
|
| szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Никак не могу наладить такой штуки. То, что в линуксе у меня работало - popen() - в виндах тоже работает, но мелькает черное терминальное окошко. Как от него избавиться?
Поясню все в деталях: Мне нужно чтобы я мог запустить какую-нибудь command line программу и получить ее вывод себе куда-нибудь. Например если есть программа, которая делает следующее: proga.exe:
Я пишу другую прогу, которая делает следующее:
и вот после этого в переменной proga_exe_stdout должно содержаться "Hello, John!" то есть мне нужна эта волшебная функция getStdOutFromProgram И чтоб никаких черных окошек не мелькало! --------------------
|
||||||
|
|||||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
чел...вот она
вот те....вырезка из справки BC++B6: _popen, _wpopen Header File stdio.h Category Input/output Routines Prototype FILE *_popen (const char *command, const char *mode); FILE *_wpopen (const wchar_t *command, const wchar_t *mode); Description Creates a command processor pipe. The _popen function creates a pipe to the command processor. The command processor is executed asynchronously, and is passed the command line in command. The mode string specifies whether the pipe is connected to the command processor’s standard input or output, and whether the pipe is to be opened in binary or text mode. The mode string can take one of the following values: Value Description rt Read child command’s standard output (text). rb Read child command’s standard output (binary). wt Write to child command’s standard input (text). wb Write to child command’s standard input (binary). The terminating t or b is optional; if missing, the translation mode is determined by the external variable _fmode. Use the _pclose function to close the pipe and obtain the return code of the command. Return Value On success, _popen returns a FILE pointer that can be used to read the standard output of the command, or to write to the standard input of the command, depending on the mode string. On error, it returns NULL. -------------------- СУВ, Partizan. |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Я же говорю: черное окошко консоли мигает!
Как от него избавиться? --------------------
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
ты эту функцию из консольного приложения используешь?
-------------------- СУВ, Partizan. |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
нет, из GUI!
--------------------
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
у меня всё красиво вызывается...
Добавлено @ 02:34
но это из консоли.... Добавлено @ 02:35 А вообще в MSDN по поводу вызова из GUI вот что написано... Note If used in a Windows program, the _popen function returns an invalid file pointer that will cause the program to hang indefinitely. _popen works properly in a Console application. To create a Windows application that redirects input and output, see Creating a Child Process with Redirected Input and Output in the Platform SDK. -------------------- СУВ, Partizan. |
|||
|
||||
| Guest |
|
||||
|
Unregistered |
Из своей GUI
создаешь pipe и передаешь его handle консольному процессу
вывод пойдет не на консоль а в pipe а с другого конца pipe читаешь в цикле по таймеру или ещё как
|
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
чтобы окно консоли не выскакивало на экран
добавь
|
|||
|
||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Вот тут написано:
Это в таймере. Но как я узнаю что процесс в pipe завершился чтобы таймер остановить и продолжить работу? --------------------
|
||||
|
|||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
а разве хэндл пайпа по завершении процесса не равен NULL???
-------------------- СУВ, Partizan. |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Ок, разобрался
--------------------
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |