我需要以编程方式将Page Down按键发送到控制台应用程序,我就迷路了。 我在MemoryStream上尝试了Console.SetIn和一个StreamReader,然后编写了34(在ConsoleKey枚举中向下翻页)并没有发生任何事情。
答案 0 :(得分:1)
SendKeys.Send("{PGDN}");
答案 1 :(得分:1)
您可以使用“WriteConsoleInput”函数(即Windows API)直接写入控制台。或者,“SendKeys”,“keybd_event”或“SendInput API”应该都可以工作,但需要控制台在前台。
http://msdn.microsoft.com/en-us/library/ms687403(VS.85).aspx - WriteConsoleInput
msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx - keybd_event
msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx - SendInput
后两个相当于使用“SendKeys”,它源自VB5s SendKeys API。不幸的是,后两种方法要求目标窗口(控制台窗口或其他)是活动窗口,或者将其输入队列连接到活动窗口的输入队列。
WriteConsoleInput将是最合适的方式,避免使COnsole窗口可见或活动。此外,在Console窗口上写入标准输入/输出与通过Console API或其他输入注入API(例如SendInput / keybd_event或VB / .NET SendKeys Wrapper)发送Input不同。
Windows控制台应用程序与Unix或DOS 6.x(或更早版本)“控制台”应用程序不同,因为它不是真正的基于管道的实现,在许多情况下,使用STDIN / STDOUT将无法使用效果,您可能会发现某些框架与Console API集成而不是STDIN / STDOUT。人们几乎可以说STDIN已经死了,特别是考虑到Windows PowerShell中存在的“对象管道”。
或者您可以使用CreateProcess API(或System.Diagnostics.Process)并提供您自己的stdin / stdout / stderr流并绕过这些流的Windows控制台,但除非目标应用程序通过STDIN / STDOUT / STDERR显式工作,否则可能没有用。
答案 2 :(得分:0)
您可以使用StreamWriter和System.Windows.Forms.Keys.PageDown吗?