2012-12-17 70 views
1

我正在使用Registerhotkey來允許我的用戶定義自定義組合鍵以執行不同的操作。我似乎遇到的問題是,目前沒有辦法檢查密鑰是否已經存在。如何判斷熱鍵組合是否已存在

例如:我的一位測試人員試圖定義「Windows Key + D」,但不知道這是最小化所有窗口的關鍵組合。所以我很好奇,是否有任何方法可以告訴我是否可以通過Windows或任何其他應用程序來檢查該組合鍵是否已存在。

+1

根據http://msdn.microsoft.com/en-us/library/ms646309%28v=VS.85%29.aspx上的文檔,「涉及WINDOWS鍵的鍵盤快捷鍵被保留供操作系統。」您的應用程序不應允許用戶定義Windows快捷鍵。 –

+0

這使得問題仍然存在,例如「Control + C」,我也想知道一個組合是否被另一個程序保留。基本上這將是很好的給一個關鍵組合,以檢查它是否做了什麼,如果是這樣,比扔我們的用戶異常。 –

+1

該文檔還說:「如果爲熱鍵指定的擊鍵已被其他熱鍵註冊,RegisterHotKey將失敗。」一些常用組合鍵可能不是熱鍵。如果你想支持這些約定,那麼你的應用程序將不得不阻止用戶定義衝突的熱鍵。 –

回答

2

感謝@ jim-mischel for helping me find this solution

要檢查熱鍵存在就是做到以下幾點:

int ShortcutID = 100; // ID used for this Shortcut Key Combination 
uint keyModifier = 2; // This is the Control Key 
Char alphanumericKey = "C"; 
bool didItError 
    = RegisterHotKey(this.Handle, ShortcutID, keyModifier, (int)alphanumericKey); 

由於Control+C是Windows的註冊鍵組合RegisterHotKey將返回false,如果它是不是註冊組合鍵,將返回true !

+0

有趣的是,它如何返回CTRL + V的'真'。 –

相關問題