如何将组合键绑定到我的vb.net应用程序?我知道它与注册表有关,但我不知道该怎么做或怎么做。我希望用户能够在应用程序打开时点击这些键并让它执行我的功能,但不是在应用程序关闭时。
感谢您的帮助!
答案 0 :(得分:0)
这取决于你要做的事情:
如果您有一个gui应用程序并且想要处理关键事件,那么您可以在keydown事件处理程序中执行此操作
如果你想做更多低级别的东西,并且有一个应用程序可以拦截所有击键(无论应用程序是否有焦点/可见),那么你需要使用pinvoke来击中win32 apis。我建议你阅读以下内容: link text
请告诉我们您的目的是什么,以便我们提供更好的反馈。
答案 1 :(得分:0)
如果您使用的是对话框,则可以输入'&'一些控件(按钮,复选框,单选按钮等)的文本,这将导致Alt加上文本中的下一个字符用作加速器/快捷方式。即如果按Alt + O,“& Open”将激活“打开”按钮。如果是Alt + e,“Op& en”将激活。
除此之外,正如Jason Irwin所说,你需要在Form中为KeyDown或KeyPress事件添加一个事件处理程序,然后检查keypress是否是你感兴趣的组合键。这只有在用户激活时才有效你的表单(点击它给它输入焦点。如果他们把它放在另一个窗口后面,它将不会对按键做出反应)
如果您不想显示表单,或者想要在不是输入焦点应用程序时对按键作出反应,那么它会变得有点复杂(您需要使用隐藏的表单或键盘钩)
修改强>
好的,看起来你想要一个键盘钩子。这看起来像good article。
答案 2 :(得分:0)
使用Google,我找到了this Keyhook example。
我之前在Delphi WIN32中使用过keyhooks,所以我对它们有点熟悉。 (只是不在C#中。)如果你在DLL中添加一个,那么所有地狱都可能会崩溃,因为大多数病毒扫描程序会将此识别为恶意软件行为。 (特别是如果以错误的方式使用它们,会导致它们被注入到系统上运行的每个进程中。) 然而,一个keyhook将允许从其他进程捕获组合键。
对于没有编程要求的解决方案:在桌面上删除应用程序的快捷方式。编辑它,指定快捷方式,关闭它。按快捷方式测试......