将键组合绑定到您的应用程序

时间:2009-09-08 19:51:44

标签: vb.net keyboard keyboard-hook

如何将组合键绑定到我的vb.net应用程序?我知道它与注册表有关,但我不知道该怎么做或怎么做。我希望用户能够在应用程序打开时点击这些键并让它执行我的功能,但不是在应用程序关闭时。

感谢您的帮助!

3 个答案:

答案 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将允许从其他进程捕获组合键。

对于没有编程要求的解决方案:在桌面上删除应用程序的快捷方式。编辑它,指定快捷方式,关闭它。按快捷方式测试......