如何将功能按键(F1..F12)发送到.NET中的控制台应用程序

时间:2010-06-25 10:26:52

标签: c# .net process keypress handle

我正在C#中编写一个窗口化的.NET应用程序,它通过Process类运行第三方控制台应用程序,尽可能隐藏(CreateNoWindow,RedirectStandardOutput等)。

我重定向了它的StandardInput,所以我可以写任何我想要的字符串,但不能写函数键或其他类型的特殊键,因为它们没有字符表示。至于我,我必须将F1到F4键发送到控制台应用程序。我找到的解决方案适用于窗口应用(PostMessage,SendMessage)。

如何为我的控制台应用程序执行此操作?

与流程的处理有什么关系吗?

4 个答案:

答案 0 :(得分:1)

你做不到。功能键无法使用stdin,应用程序必须调用ReadConsoleInput()才能检测到它们。当你在没有控制台窗口的情况下启动进程时,这种情况不再有效。

答案 1 :(得分:0)

Sendkeys.SendWait可能会解决您的问题。

答案 2 :(得分:0)

SendKeys是否有效("{F1}")? (但控制台必须是活动的。)

答案 3 :(得分:0)

这不是您问题的直接答案,但您是否考虑过使用MSMQ?

如果您的窗口应用程序可以接收这些按键,它可以使用MSMQ将该事实传递给您的控制台应用程序。你可能没有必要实际通过按键,只是他们被按下的事实。

我发现这个techrepublic article有助于了解MSMQ的基础知识。