Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何判断热键组合是否已经存在_C# - Fatal编程技术网

C# 如何判断热键组合是否已经存在

C# 如何判断热键组合是否已经存在,c#,C#,我使用Registerhotkey允许我的用户定义自定义组合键来执行不同的操作。我似乎遇到的问题是,目前无法检查密钥是否已经存在 例如:我的一个测试人员试图定义“windowskey+D”,但不知道这是最小化所有窗口的组合键。因此,我很好奇是否有任何方法可以告诉我是否提供了一个组合键,我可以检查windows或任何其他应用程序是否已经存在该组合键。感谢@jim mischel 要检查热键是否存在,只需执行以下操作: int ShortcutID = 100; // ID used for thi

我使用Registerhotkey允许我的用户定义自定义组合键来执行不同的操作。我似乎遇到的问题是,目前无法检查密钥是否已经存在

例如:我的一个测试人员试图定义“windowskey+D”,但不知道这是最小化所有窗口的组合键。因此,我很好奇是否有任何方法可以告诉我是否提供了一个组合键,我可以检查windows或任何其他应用程序是否已经存在该组合键。

感谢@jim mischel

要检查热键是否存在,只需执行以下操作:

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

根据位于的文档,“涉及WINDOWS键的键盘快捷键保留供操作系统使用。”您的应用程序不应允许用户定义WINDOWS键快捷键。这使得,由于,该问题仍然存在,例如“Control+C”,我还想知道另一个程序是否也保留了按键组合。基本上,最好给出一个组合键来检查它是否有作用,如果是的话,而不是向我的用户抛出一个异常。文档还说:“如果为热键指定的击键已经被另一个热键注册,则RegisterHotKey会失败。”可能一些常见的组合键不是热键。如果您希望支持这些约定,那么您的应用程序将必须防止用户定义冲突的热键。需要我进行一些修改,因为我做的最后一件事是注册密钥,但如果我要做的只是添加
bool didItError=RegisterHotKey(…,…,…,…)要解决这个问题,我是一个快乐的露营者!非常感谢你@McIntosh你能不能把你的编辑回滚并简单地把它作为一个答案发布。。。当你做这件事的时候,对你做过类似事情的所有其他问题也要这样做O SE不允许你回答自己的问题。将问题保留为问题,将答案作为答案发布。对于CTRL+V,它返回
true
的方式很有趣。