![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Как в не консольном (в своем же процессе) приложении перехватить то что выводит printf.
И если существует StdIn и StdOut для не консольного приложения как его перехватить и вывести в тот же Edit -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
думаю, в таком случае надежнее будет использовать пайпы Добавлено через 28 секунд а не StdIn и StdOut -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Пробовал так
но возвращается ReadConsole FAIL = 8 Собственно к чему замут то, имею python.dll из которой вызываю функции и передаю им имя скрипта на выполнение, но результата не вижу. Нужно как то получать выполнения скрипта питона. Это сообщение отредактировал(а) Dem_max - 15.5.2013, 07:34 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
DarthTon |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 7.2.2009 Репутация: 5 Всего: 6 |
У меня работает как-то так:
Тут возникают проблемы с буферизацией stdout, если её не отключить (setvbuf(stdout, NULL, _IONBF, 0)) то пайп ждёт либо полного заполнения буфера, либо надо флашить stdout вручную. В документации к setvbuf, однако, есть флаг _IOLBF, описание которого гласит
Но у меня он всё равно не заработал, как бы я не пытался отправить в поток newline character. |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
а если не использовать CRT(printf), а писать в пайп с помощью WriteConsole? Добавлено через 1 минуту и 18 секунд или WriteFile? -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
DarthTon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 7.2.2009 Репутация: 5 Всего: 6 |
При помощи WriteConsole можно писать только в консольные хендлы (GetStdHandle(STD_OUTPUT_HANDLE) и т.п.), для хендла пайпа оно возвращает Invalid Handle; подмена дефолтного STD_OUTPUT_HANDLE на хендл пайпа тоже не помогает .
Я не тестировал WriteFile в пайп на больших сообщениях, но на маленьких всё работает как и должно . Проблемы только при использовании CRT с буферизацией. |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
_open_osfhandl
это CRT от мелкомягких, оно никак не подходит для других компиляторов. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |