Скриншот окна команды с использованием управляемого кода.net
Я пишу программу в dot net, которая будет выполнять скрипты и программы командной строки, используя объект Process в фреймворке 2.0. Я хочу иметь доступ к экранным буферам процесса в моей программе. Я исследовал это, и, похоже, мне нужен доступ к консольным буферам stdout и stderr. Кто-нибудь знает, как это достигается с помощью управляемого кода?
Я думаю, что мне нужно использовать AttachConsole и ReadConsoleOutput консоли Windows, прикрепленной к задаче, чтобы прочитать блок символов и данных атрибутов с экрана консоли. Мне нужно сделать это управляемый код.
См. http://msdn.microsoft.com/en-us/library/ms684965(VS.85).aspx
1 ответ
Это можно сделать с помощью свойств StandardError, StandardOutput и StandardInput класса System.Diagnostics.Process.
В MSDN есть хороший пример перенаправления стандарта в процесс и из него.
Обратите внимание, что вы можете перенаправить только вывод запущенных вами процессов. Внешние процессы, которые вы не запустили, не могут быть перенаправлены на стандартный вывод.
Также обратите внимание, что для использования StandardInput необходимо установить для ProcessStartInfo.UseShellExecute значение false и установить для ProcessStartInfo.RedirectStandardInput значение true. В противном случае запись в поток StandardInput вызывает исключение.