2009-09-25 423 views

回答

1
SendKeys.Send("{PGDN}"); 
+0

確保您完全符合條件或添加了對System.Windows.Forms的引用。它在控制檯應用程序中起作用。 – phoebus 2009-09-25 04:20:12

0

你可以使用StreamWriter和System.Windows.Forms.Keys.PageDown嗎?

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將是最合適的方式,從而避免需要使COMnsole窗口可見或活動。此外,在控制檯窗口中寫入標準輸入/輸出與通過控制檯API或其他輸入注入API(例如SendInput/keybd_event或VB/.NET SendKeys包裝器)發送輸入不同。

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顯式工作它可能沒有幫助。