![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Гость_Чайник |
|
|||
Unregistered |
Привет всем!
Можно ли GUI-проге запустить дочерний консольный процесс (не свой консоль!) и из него (из его STD_OUTPUT_HANDLE) читать данные? Помогите, плиз! |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
CreateProcess в LPSTARTUPINFO есть параметр что то типа output, туда пропиши хэндл файла
и синхронизься с ним ![]() Добавлено @ 16:10 Всё остальное RTFMSDN --------------------
|
|||
|
||||
Гость_Чайник |
|
|||
Unregistered |
chipset , cделал я как ты и говорил, но... :’( при первом же нажатии клавиши прога console.exe падает. А почему – хз. Помоги, плиз!
|
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
srt.dwFlags = STARTF_USESTDHANDLES;
зачем? --------------------
|
|||
|
||||
Гость_Чайник |
|
|||
Unregistered |
без него тоже никакого результата
![]() |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Я делал это через трубы
![]() Вместо CreateFile сделай CreatePipe - получишь 2 хэндла - для ввода и вывода. Их и укажи в srt. При создании pipe'а, нужно обязательно указать SECURITY_ATTRIBUTES. Будет примерно так:
Читать из пайпа - ReadFile... -------------------- С уважением, г-н Посол. |
|||
|
||||
Гость_Чайник |
|
|||
Unregistered |
Пишу в pipe так, но ничего консоль не получает, хотя WriteFile возвращает TRUE. Я что-то не так делаю, но что именно?
|
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Дык, надо было сразу сказать, что ты кроме того, что хочешь заполучить вывод, еще хочешь и ввод свой сделать...
В таком случае надо создавать 2 пайпа: один - для ввода другой - для вывода У каждого пайпа, как ты уже замител, есть 2 хэндла: один - для записи в пайп, другой - для чтения из пайпа
-------------------- С уважением, г-н Посол. |
|||
|
||||
Гость_Чайник |
|
|||
Unregistered |
p0s0l , СПАСИБО!
Теперь работает, я всё понял ![]() Вот токо одна беда - в консоль отправляется из pipe все то, что стоит до первого пробела!!! |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Пожалуйста!
![]()
-------------------- С уважением, г-н Посол. |
|||
|
||||
Guest |
|
|||
Unregistered |
я уже сам разобрался
![]() надо было в консоли принимать данные примерно так:
P.S. На этом форуме сидят профи СПАСИБО!!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |