Включить вывод консольного приложения в сценарии - PullRequest
0 голосов
/ 16 августа 2010

У меня есть небольшое консольное приложение C ++, которое представляет меню, затем выполняет выбранную операцию.

Кроме того, я написал VBScript, который запускается через StdOut (достигнутый Exec) и входит в StdIn.значения.

Однако, когда я пытаюсь выполнить этот скрипт, консольное приложение застревает в вызове scanf, и скрипт ничего не получает из вывода._flushall () не помогает.

У кого-нибудь есть идеи?

Спасибо.

1 Ответ

0 голосов
/ 30 января 2012

Это очень сложно для VBScript / Windows Scripting Host, поскольку нет неблокирующего ввода-вывода. Другими словами, невозможно сказать: «Прочтите все, что доступно прямо сейчас, а затем немедленно вернитесь».

  • Если вы скажете ReadLine, он прочтет строку. Если сейчас нет готовой линии, она будет ждать ее.
  • Если вы скажете ReadAll, он будет читать до тех пор, пока дескриптор файла не будет закрыт, то есть до завершения программы. Он не вернется до тех пор.

Это можно сделать из скрипта, если вы точно знаете, какой вывод программа создаст при любых обстоятельствах.

В большинстве ситуаций лучше установить программу в неинтерактивный «пакетный» режим, если это возможно, когда программа принимает команды, но без необходимости отвечать на запросы.

...