2014-07-21 34 views
1

無論焦點在哪裏(只要他們正在使用應用程序),我如何確定哪些關鍵用戶按下了?按下表格上的任意位置

例如,他們按下 「CTRL +Q」(退出),並在程序退出不管。

通常情況下,我必須去KeyDown的表單事件,並在那裏做出這種情況。但是如果表單不重點呢?然後CTRL + 問題不起作用。

如何在Windows窗體應用程序中執行此操作?我相信這很簡單,但找不到方法。

+0

你是什麼意思「如果表單沒有集中」呢?你有多種形式,或者你的意思是另一個應用程序可能關注?你是否需要在表單上將KeyPreview設置爲true? – Blorgbeard

回答

3

你所描述的通常被稱爲系統範圍的熱鍵

Windows窗體本質上不支持系統範圍的熱鍵,這意味着您需要手動註冊並通過本機RegisterHotkey函數或使用第三方庫(如Shortcut)管理每個系統範圍的熱鍵。

如果您選擇手動註冊和管理每個系統範圍的熱鍵here is an articlehere is a screencast,那應該對您有所幫助。

(完全披露:捷徑是我的一個項目,就像截屏視頻一樣)。

+1

是的! [THIS](https://www.youtube.com/watch?v=dvtV3jc4maY)您給我的視頻提供了更多我需要的信息,這正是我想要的,謝謝! – BlazE

2

你的問題不清楚 - 但鑑於這句話:

如何確定按下哪個鍵的用戶,無論身在何處是焦點(只要他們使用的應用程序)?

我打算假設您不是在尋找一個系統全局熱鍵,而只是一個應用程序全局熱鍵。

如果您只有一個表單,則只需將表單的KeyPreview屬性設置爲true即可。

即使窗體上的控件具有焦點,這也會將所有按鍵事件(KeyDown等)發送到窗體的效果。

然後你可以簡單地實現你的KeyDown處理程序,就像你在問題中提到的那樣。

如果您有多個表單,那麼您可能需要在每個表單上執行此操作。

相關問題