Как отправить функциональное нажатие клавиши (F1.. F12) к консольному приложению в.NET

Я пишу оконное приложение.NET в C#, который запускает стороннее консольное приложение через класс Процесса, максимально скрытый (CreateNoWindow, RedirectStandardOutput, и т.д.).

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

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

Там что-нибудь должно сделать с Дескриптором Процесса?

6
задан ifroz 25 June 2010 в 10:26
поделиться

4 ответа

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

1
ответ дан 17 December 2019 в 22:10
поделиться

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

0
ответ дан 17 December 2019 в 22:10
поделиться

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

0
ответ дан 17 December 2019 в 22:10
поделиться

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

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

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

0
ответ дан 17 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: