我正在C#中编写一个窗口化的.NET应用程序,它通过Process类运行第三方控制台应用程序,尽可能隐藏(CreateNoWindow,RedirectStandardOutput等)。
我重定向了它的StandardInput,所以我可以写任何我想要的字符串,但不能写函数键或其他类型的特殊键,因为它们没有字符表示。至于我,我必须将F1到F4键发送到控制台应用程序。我找到的解决方案适用于窗口应用(PostMessage,SendMessage)。
如何为我的控制台应用程序执行此操作?
与流程的处理有什么关系吗?
答案 0 :(得分:1)
你做不到。功能键无法使用stdin,应用程序必须调用ReadConsoleInput()才能检测到它们。当你在没有控制台窗口的情况下启动进程时,这种情况不再有效。
答案 1 :(得分:0)
Sendkeys.SendWait可能会解决您的问题。
答案 2 :(得分:0)
SendKeys
是否有效("{F1}"
)? (但控制台必须是活动的。)
答案 3 :(得分:0)
这不是您问题的直接答案,但您是否考虑过使用MSMQ?
如果您的窗口应用程序可以接收这些按键,它可以使用MSMQ将该事实传递给您的控制台应用程序。你可能没有必要实际通过按键,只是他们被按下的事实。
我发现这个techrepublic article有助于了解MSMQ的基础知识。