我正在使用Registerhotkey來允許我的用戶定義自定義組合鍵以執行不同的操作。我似乎遇到的問題是,目前沒有辦法檢查密鑰是否已經存在。如何判斷熱鍵組合是否已存在
例如:我的一位測試人員試圖定義「Windows Key + D」,但不知道這是最小化所有窗口的關鍵組合。所以我很好奇,是否有任何方法可以告訴我是否可以通過Windows或任何其他應用程序來檢查該組合鍵是否已存在。
我正在使用Registerhotkey來允許我的用戶定義自定義組合鍵以執行不同的操作。我似乎遇到的問題是,目前沒有辦法檢查密鑰是否已經存在。如何判斷熱鍵組合是否已存在
例如:我的一位測試人員試圖定義「Windows Key + D」,但不知道這是最小化所有窗口的關鍵組合。所以我很好奇,是否有任何方法可以告訴我是否可以通過Windows或任何其他應用程序來檢查該組合鍵是否已存在。
感謝@ 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 !
有趣的是,它如何返回CTRL + V的'真'。 –
根據http://msdn.microsoft.com/en-us/library/ms646309%28v=VS.85%29.aspx上的文檔,「涉及WINDOWS鍵的鍵盤快捷鍵被保留供操作系統。」您的應用程序不應允許用戶定義Windows快捷鍵。 –
這使得問題仍然存在,例如「Control + C」,我也想知道一個組合是否被另一個程序保留。基本上這將是很好的給一個關鍵組合,以檢查它是否做了什麼,如果是這樣,比扔我們的用戶異常。 –
該文檔還說:「如果爲熱鍵指定的擊鍵已被其他熱鍵註冊,RegisterHotKey將失敗。」一些常用組合鍵可能不是熱鍵。如果你想支持這些約定,那麼你的應用程序將不得不阻止用戶定義衝突的熱鍵。 –