Вводить команды, отправляя нажатия клавиш в окна команд? - PullRequest
6 голосов
/ 13 мая 2011

У меня есть окно командной строки, которое запускает веб-часть программного обеспечения.Я хочу создать программу на C #, которая будет вводить команды в окно командной строки.

Любые указатели?

Спасибо, Пол.

1 Ответ

8 голосов
/ 13 мая 2011

Быстрый и грязный метод:

используйте SetFocus , чтобы установить фокус на окне cmd, затем используйте SendInput , чтобы отправить нажатия клавиш в окне cmd.

Вы можете использовать это определение P / Invoke для вызова SendInput из c #:

[DllImport("user32.dll", SetLastError=true)]
static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize);

и этого для SetFocus

[DllImport("user32.dll")]
static extern IntPtr SetFocus(IntPtr hWnd);

Чтобы получить дескриптор окна, требуемый для SetFocus, вы можете использовать FindWindow или, возможно, получить соответствующий процесс cmd, используя Process.GetProcessesByName, а затем использовать свойство MainWindowHandle.

...