Как отправить функцию нажатия клавиш (F1..F12) в консольное приложение в .NET - PullRequest
6 голосов
/ 25 июня 2010

Я пишу оконное .NET-приложение на C #, которое запускает стороннее консольное приложение через класс Process, как можно более скрытым (CreateNoWindow, RedirectStandardOutput и т. Д.).

Я перенаправил егоStandardInput, поэтому я могу написать любую строку, какую захочу, но не функциональные клавиши или специальные клавиши другого типа, так как они не имеют символьного представления.Что касается меня, я должен отправить ключи F1 - F4 в консольное приложение.Решения, которые я нашел, предназначены для оконного приложения (PostMessage, SendMessage).

Как я могу сделать это для моего консольного приложения?

Есть ли какое-либо отношение к дескриптору процесса?

Ответы [ 4 ]

1 голос
/ 25 июня 2010

Вы не можете.Функциональные клавиши не могут работать с stdin, приложение должно вызывать ReadConsoleInput (), чтобы их можно было обнаружить.Это больше не работает, когда вы запускаете процесс без окна консоли.

0 голосов
/ 25 июня 2010

Это не прямой ответ на ваш вопрос, но вы рассматривали вопрос об использовании MSMQ?

Если ваше оконное приложение может получать эти нажатия клавиш, оно может передать этот факт вашему консольному приложению с помощью MSMQ. Возможно, вам даже не придется нажимать клавишу, только тот факт, что они были нажаты.

Я нашел эту техническую публикацию полезной для начала работы с MSMQ.

0 голосов
/ 25 июня 2010

Работает ли SendKeys ("{F1}")?(хотя консоль должна быть активной).

0 голосов
/ 25 июня 2010

Sendkeys.SendWait может решить вашу проблему.

...