Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Код на фоксе может вызывать внешнюю консольную программу. Может дождаться ее завершения.
А как перехватить от нее потоки stdout и stderr? Посмотрел в сторону win32 - очень заморочно. Может есть готовые решения? Задача в целом: передать часть функций в Питон. Буду признателен за советы в этом направлении. ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
В решениях есть пример от Андрюхи Петрова, но довести его ума у меня вместе с автором не получилось.
Вышел из положения через консольную прогу на Дельфях, общение с фоксом через файл. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
_vit Сообщений: 5175 Дата регистрации: 29.07.2002 |
Не пойдет? |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Поменять "способ общения" с потоков ввода/вывода на файлы, или какие IPC средства, или, ещё лучше, на HTTP или на худой конец на просто tcp-сокеты. Думаю питон это всё умеет вполне. Нельзя лезть в саму утилиту - значит написать обёртку на том языке какой знаешь, и где есть родная поддержка и потоков и чего-то из указанного. Геморроится с работой с потоками через апи - ну так себе удовольствие для фокса... ------------------ WBR, Igor |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
medstrах Сообщений: 1810 Дата регистрации: 10.06.2019 |
|
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Выглядит заманчиво. Работает как требовалось. Еще бы избавиться от мелькающего окна с консолью, но и так можно потерпеть ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Во-во. Посмотрел я на это и понял, что хакер во мне не родился ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Да, это как раз было понятно сразу. Попробую пока через RUN. Если не все получится, то буду изнутри Питона направлять потоки в файлы ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
От мелькающего окна с консолью должен спасти один из переключателей командной строки. Сейчас не помню какой. Что-то вроде "запустить в теневом режиме". Можно, кстати, использовать и RUN CMD <опции>. Или вообще запускать через батник.
|
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
1. Возможно вы про дополнение к опции /N. Вот что про это в Справке You can include an optional numeric value immediately after /N to specify how the Windows-based application is opened. Do not include any spaces between /N and the numeric value. The following table lists the numeric value you can include and describes the state of the Windows-based application when opened. Value Application attributes 1 Active and normal size. 2 Active and minimized. 3 Active and maximized. 4 Inactive and normal size. 7 Inactive and minimized.Но это только для "запустить и не ждать". Мне нужно дождаться и использовать результаты. Где-то еще можно "теневой режим" настраивать? 2. Поясните "RUN CMD <опции>". ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Через RUN можно запустить командную строку CMD.EXE
У CMD.EXE довольно много опций. Можно почитать о них : CMD /? > info.txt |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Simple777
"RUN CMD <опции>" это скорее всего тоже про общение файлами. В <опциях> можно указать где файлы с входными/выходными данными. ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Почитал, что пишет
------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
А вот так?
o=CreateObject("Wscript.Shell") x=o.Exec("cmd /c dir") x.Terminate() ? x.StdOut.ReadAll (c Piva) |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
kvichans Автор Сообщений: 307 Откуда: Москва Дата регистрации: 19.01.2006 |
Ух ты! Выглядит здорово. Буду это осваивать ------------------ Андрей, FoxPro с 2003 года |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
medstrах Сообщений: 1810 Дата регистрации: 10.06.2019 |
Если можно нормально все запилить на винапи, то юзать всякие приблуды типа WSH это моветон
Исправлено 1 раз(а). Последнее : medstrах, 05.07.19 17:52 |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
medstrах Сообщений: 1810 Дата регистрации: 10.06.2019 |
Если уж так хочется приблуд, то юзать Power shell логичней и правильней. WSH наверняка рано или поздно выпилят из системы
|
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Иди и пили, ёпт. Где код?! |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
medstrах Сообщений: 1810 Дата регистрации: 10.06.2019 |
Ты слабоумный? Если мне нужен код, то я его пишу, а не выеб..ваюсь на форумах. |
Re: Как перехватить stdout/stderr при вызове внешней программы? | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ястно, кода нет, очередной пишущий в стол...
|
© 2000-2024 Fox Club  |