Копирование вывода консоли AutoCAD во внешний поток (stream)

Автор Тема: Копирование вывода консоли AutoCAD во внешний поток (stream)  (Прочитано 8589 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Доброго времени суток.

Мне нужно копировать в поток (stream) всё то, что выводится в консоль командной строки AutoCAD. Как это сделать?

Спасибо.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Цитировать
accoreconsole.exe >d:\log.txt

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
accoreconsole.exe >d:\log.txt
Не то. мне нужно перенаправлять потоки динамически, дабы программа, мониторящая поток, могла быстро отследить факт получения очередной информации. Кроме того, консольный вывод командной строки и поток вывода процесса - это четыре совершенно разных человека. То, что ты показал - это stdout, а не вывод командной строки.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Ок - тогда Process.Start(ProcessStartInfo(...RedirectStandardOutput=true)...
А так же RedirectStandardError и RedirectStandardInput
Но да это тоже вывод всего потока.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Ок - тогда Process.Start(ProcessStartInfo(...RedirectStandardOutput=true)...
А так же RedirectStandardError и RedirectStandardInput.
Боюсь, что потоки stdin, stdout и stderr не имеют отношения к консоли командной строки AutoCAD.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Ну если берем не автокад, а accoreconsole - то в общем разница не велика.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Ну если берем не автокад, а accoreconsole - то в общем разница не велика.
я пока решаю задачу применительно к acad.exe, поскольку в первую очередь это должно работать в 2009-м.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
А есть более развенутое описание  - что и почему надо отследить именно в ком. строке?

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
А есть более развенутое описание  - что и почему надо отследить именно в ком. строке?
Некоторые вещи в AutoCAD 2009 сделать либо невозможно, либо трудно. Некоторое время назад мною был написан сервис, работающий на удалённой машине - он выступает в качестве прокси командной строки AutoCAD - полученные с удалённой машины команды выполняет в AutoCAD 2015 или любой нужной версии (версия указывается юзером при инициализации диалога со службой). Всё работает, однако хотелось бы обратно, удалённому юзеру, отправлять то, что AutoCAD выводит у себя в командной консоли во время своей работы, дабы связь была более живой. Эта же штука время от времени используется для пакетной обработки чертежей.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Ну так тут консольный автокад удаленный сам по себе напрашивается - сервис запускает его (он менее ресурсоемкий и "многопоточный") - а перенаправляет юзеру - какая разница из какого автокада обращаться к службе - вообще откуда угодно можно

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Ну так тут консольный автокад удаленный сам по себе напрашивается - сервис запускает его (он менее ресурсоемкий и "многопоточный") - а перенаправляет юзеру - какая разница из какого автокада обращаться к службе - вобще откуда угодно можно
Работать должно с любым AutoCAD, новее чем 2008. По тем или иным причинам юзер может обратиться к AutoCAD более старой версии чем 2013-я.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Цитировать
?
их можно паралельно, раз в 20 больше запустить чем автокадов, машину "колом" не поставив.

Тады (да еще если под все автокады) - только "хукать" окно вывода - но ИХМО это не есть надежное решение - тут разумней ТЗ урезать до младшей 2013 удаленной версии.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Пока посмотри это: http://adndevblog.typepad.com/autocad/2012/09/trapping-the-output-from-the-autocad-text-screen-command-prompt.html
Перевод: http://adn-cis.org/perexvat-vyivoda-v-tekstovyij-ekran-i-komandnuyu-stroku-autocad.html
Насколько я помню в .NET это сделать нельзя. Во всяком случае в старых версиях.
« Последнее редактирование: 26-03-2015, 21:48:48 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение