2017-09-14 305 views
2

因此,例如,我可以很容易地註冊一個熱鍵是Shift鍵的組合,Alt鍵(國防部鍵)和向上箭頭:的Windows API - 註冊有多個按鍵組合熱鍵

RegisterHotKey(NULL, TOP, MOD_SHIFT | MOD_ALT, VK_UP);

這個工程只是罰款,但我後面註冊一個熱鍵與上面相同的鍵加上另一個正常的鍵,如左箭頭,所以組合將是Shift,Alt,向上箭頭,向左箭頭。

沒有在其他參數的函數空間,我試圖做一個按位或爲向上和向左箭頭鍵,如

VK_UP | VK_LEFT

...但它不工作。如果有人遇到過這個問題或知道我如何繼續請幫助!

+0

您無法使用熱鍵API來完成此操作。如果在主熱鍵被觸發時按下第二個鍵,您可以嘗試檢查(使用'GetKeyState'),但是如果用戶按「錯誤」順序按下兩個鍵,我懷疑它可能根本不會被觸發。 –

+2

我的程序使用Shift + Alt + Up作爲其快捷鍵之一。你的程序只是打破了我的程序。或換句話說,全球熱鍵只適用於售貨亭的情況,這種情況下你不需要它們! –

+0

@DavidHeffernan我相信RegisterHotkey(...)在嘗試註冊已經使用的熱鍵時不起作用。 –

回答

1

Windows熱鍵不支持多個(非修飾鍵)鍵。您不能按位或多個VK_*值,只有MOD_*值可以組合。

如果你非常需要這個功能,那麼你必須使用low-level keyboard hook並自己跟蹤這些密鑰。掛鉤會影響全局系統性能,應儘可能避免掛鉤。

如果您決定這樣做,您必須記住,Windows用戶不習慣以這種方式按熱鍵,只有菜單允許有點類似的模式,但您不必保持修改器的Alt以使這些工作。您還必須記得使用StickyKeys和其他輔助功能測試您的鉤子...