2013-08-15 2 views
2

я выполнить следующие шаги, чтобы передать строку ввода в консоли от C#:Как передать ввод строки в консоль с C#?

  1. я выделить консоль для зрительного процесса студии с использованием метода AllocConsole(), с помощью pInvoking Kernel32.dll.
  2. Я вызываю процесс Perl из Visual Studio (C#). Процесс Perl автоматически присоединяется к этой консоли. (для меня это нормально).
  3. Я убиваю «только» процесс Perl, передавая ему сигнал C C. (Я подавляю сигнал Ctrl C для Visual Studio)
  4. Теперь я хочу отправить команду (простая строка в основном) на эту консоль.

Что такое метод передачи входной строки на консоль?

Я пытаюсь использовать writeConsoleInput(), pInvoking Kernel32.dll, но я застрял на аргументах этой функции. Подпись функции:

[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] 
public static extern bool WriteConsoleInput(IntPtr hConsoleInput, 
    [Out] INPUT_RECORD[] lpBuffer, 
    int nLength, 
    out int lpNumberOfEventsWritten); 

Может кто-нибудь помочь мне успешно вызвать WriteConsoleInput() или предоставив альтернативный вариант.

Большое спасибо!

+0

Какую команду вы пытаетесь отправить на консоль? Вы просто хотите написать текст на консоли? Вы должны будете объяснить, какова ваша большая цель, потому что описание в вашем вопросе не имеет смысла. –

+0

Попробуйте это [ссылка] (http://stackoverflow.com/questions/854666/how-to-write-to-the-console-input-and-get-the-console-handle) – Nilesh

+0

Наверняка вам просто нужно написать на стандартном входе процессов perl? –

ответ

1

Подробный вопрос, как представляется, этот комментарий:

я убить процесс Perl. После этого я хочу запустить команду командной строки .

Консоль сама по себе немой. Он не может ничего делать, кроме приема ввода, и выводить вывод. Для запуска команды вам понадобится командный интерпретатор. В Windows это cmd.exe. Общий способ определения пути к интерпретатору команд считывает переменную среды COMSPEC.

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

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