2010-12-07 49 views
7

有一個崗位設置全系統的全局熱鍵在C# here設置應用程序範圍的熱鍵

我想設置應用程序範圍的熱鍵,例如,如果用戶按下的任意子窗口中的熱鍵應用程序,一個特定的窗口將接收並處理它。

感謝。

回答

6

您可以爲您的應用程序創建基本表單並將keypreview屬性設置爲true並處理keydown事件,以便您的所有表單將具有相同的鍵定義。

你也可以使用下面的例程爲你的表單註冊一個熱鍵,但是在這個方法中,你需要調用每個表單的加載事件的相同方法。

protected override bool ProcessCmdKey(ref Message message, Keys keys) 
{ 
    switch (keys) 
    { 
     case Keys.F2 | Keys.Control: 
      //Process action here. 
      return false; 
    } 

    return false; 
} 

您還可以使用user32.dll中的以下非託管方法,但當然我不會建議這樣做。

static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint virtualKey); 
private static extern bool UnregisterHotKey(IntPtr hWnd, int id); 
+0

我試圖與RegisterHotKey,但因爲它的工作原理全系統的,我不能在其他應用程序或同一應用程序的其他實例使用相關的密鑰。 – Liton 2010-12-07 14:26:55