2015-02-05 47 views
0

是否有可能以除Console.ReadKey()之外的任何其他方式檢查控制檯應用程序中按下的按鍵?C#控制檯應用程序按鍵捕捉

我已經將項目設置更改爲Windows應用程序,以便控制檯窗口不會顯示。但是如果控制檯窗口未顯示,則應用程序崩潰,因爲Console.ReadKey()需要控制檯窗口。有什麼解決方法嗎?

注意: 我不希望任何窗口打開,只是通過線程跟蹤按鍵。

+2

即使您的程序最小化,您也希望捕獲按鍵,在這種情況下,您必須轉到低級別的Windows API編程 – Carlos487 2015-02-05 14:49:28

+0

當我想要一個沒有UI的可執行程序時,我的標準是使用WinForms而不顯示錶單,而不是控制檯應用程序而不顯示控制檯。 – SimpleVar 2015-02-05 14:53:08

回答

-4

如果您沒有窗口,則無法接收按鍵事件。你需要有一個控制檯或「桌面」窗口。

如果控制檯'Console.ReadKey()'執行該作業,則在WPF或Windows窗體的'KeyPressed'事件中執行作業。

+0

除非你非常能。無論您是否擁有窗口,有很多方法可以收聽全局鍵盤事件。 – SimpleVar 2015-02-05 14:54:04

+0

這是熱鍵,它們沒有按下「在您的應用程序中」 – TIKSN 2015-02-05 14:55:37

+0

有HotKeys,這是由OS管理的,並可以通過適當的Windows API使用。還有全局鉤子,它們不是HotKeys,而是簡單的「全局關鍵事件」監聽器。此外,OP的要求並不是捕獲在您的應用程序中按下的鍵,而是捕獲按下的鍵(如果OP首先沒有窗口,則很明顯他的意思是全局的) 。 – SimpleVar 2015-02-05 14:56:47