2014-10-29 2 views
0

Я думал о том, чтобы предоставить Windows в обновленном CMD новом виде и сделать из него WinForm (C# .net4.0 или более поздняя версия или последний моно-дистрибутив) , Теперь, что я планирую делать это:C# - используйте консоль в фоновом режиме, не показывая ее

  • показывает только форму, ни консоль видимой (даже в панели задач)

  • говорит ЦМД, что делать по фактически введя в него

  • ловить консоли вывода и с помощью формы, чтобы пользователь взаимодействовать

Я думал о каком-то «возвращении» вещи, как dll, но я не использовал консолей и форм вместе в одном проекте, поэтому есть мой вопрос: Как мне не показывать консольное окно, а писать команды в его строку и получать вывод с помощью приложения WinForms?

Заранее спасибо.

--EDIT Я должен добавить, что моя основная проблема заключается в том, чтобы набирать вывод консолей, а также печатать на нем, пока он не виден и, следовательно, не подвергается фокусировке.

+0

вы можете запустить пакетный файл через ** бесшумный режим ** в фоновом режиме (окно консоли не будет отображаться). Проверьте [this] (http://stackoverflow.com/questions/411247/running-a-cmd-or-bat-in-silent-mode) вопрос – Gowtham

ответ

2

Вы можете столкнуться с трудностями, кроме просто подавления внешнего вида окна консоли. Но что касается этого конкретного требования, это не сложно.

Чтобы начать процесс, вы будете использовать класс System.Diagnostics.Process. Перед началом процесса вам нужно будет найти ProcessStartInfo.CreateNoWindow объект недвижимости true. Обратите внимание, что вам также необходимо установить ProcessStartInfo.UseShellExecute в false, в противном случае свойство CreateNoWindow игнорируется.

Что касается более широкой проблемы: представляется вероятным, что вам нужно будет запустить консольный процесс с помощью «cmd.exe/k», чтобы создать новый процесс интерпретации командной строки без его выхода до того, как вы закончите с ним , Затем вам также нужно будет использовать функции перенаправления в классе Process для чтения из stdout и stderr и для записи в stdin.

Смежные вопросы