Я пишу оконное приложение.NET в C#, который запускает стороннее консольное приложение через класс Процесса, максимально скрытый (CreateNoWindow, RedirectStandardOutput, и т.д.).
Я перенаправил, это - StandardInput, таким образом, я могу записать любую строку, я хочу, но не функциональные клавиши или другой тип специальных ключей, поскольку у них нет символьного представления. Что касается меня, я должен отправить ключам F1 в F4 к консольному приложению. Решения, которые я нашел, для оконного приложения (PostMessage, SendMessage).
Как я могу сделать это для своего консольного приложения?
Там что-нибудь должно сделать с Дескриптором Процесса?
Вы не можете. Функциональные клавиши не могут работать со стандартным вводом, приложение должно вызвать ReadConsoleInput (), чтобы иметь возможность их обнаружить. Это больше не работает, если вы запускаете процесс без окна консоли.
Работает ли SendKeys
( "{F1}"
)? (хотя консоль должна быть активной).
Это не является прямым ответом на ваш вопрос, но рассматривали ли вы возможность использования MSMQ?
Если ваше оконное приложение может получать эти нажатия клавиш, оно может передать этот факт вашему консольное приложение с использованием MSMQ. Возможно, вам не придется фактически передавать нажатие клавиш, только тот факт, что они были нажаты.
Я нашел эту статью полезной для ознакомления с основами работы с MSMQ.