2014-07-21 32 views
1

无论焦点在哪里(只要他们正在使用应用程序),我如何确定哪些关键用户按下了?按下表格上的任意位置

例如,他们按下 “CTRL +Q”(退出),并在程序退出不管。

通常情况下,我必须去KeyDown的表单事件,并在那里做出这种情况。但是如果表单不重点呢?然后CTRL + 问题不起作用。

如何在Windows窗体应用程序中执行此操作?我相信这很简单,但找不到方法。

+0

你是什么意思“如果表单没有集中”呢?你有多种形式,或者你的意思是另一个应用程序可能关注?你是否需要在表单上将KeyPreview设置为true? – Blorgbeard

回答

3

你所描述的通常被称为系统范围的热键

Windows窗体本质上不支持系统范围的热键,这意味着您需要手动注册并通过本机RegisterHotkey函数或使用第三方库(如Shortcut)管理每个系统范围的热键。

如果您选择手动注册和管理每个系统范围的热键here is an articlehere is a screencast,那应该对您有所帮助。

(完全披露:捷径是我的一个项目,就像截屏视频一样)。

+1

是的! [THIS](https://www.youtube.com/watch?v=dvtV3jc4maY)您给我的视频提供了更多我需要的信息,这正是我想要的,谢谢! – BlazE

2

你的问题不清楚 - 但鉴于这句话:

如何确定按下哪个键的用户,无论身在何处是焦点(只要他们使用的应用程序)?

我打算假设您不是在寻找一个系统全局热键,而只是一个应用程序全局热键。

如果您只有一个表单,则只需将表单的KeyPreview属性设置为true即可。

即使窗体上的控件具有焦点,这也会将所有按键事件(KeyDown等)发送到窗体的效果。

然后你可以简单地实现你的KeyDown处理程序,就像你在问题中提到的那样。

如果您有多个表单,那么您可能需要在每个表单上执行此操作。

相关问题