无论焦点在哪里(只要他们正在使用应用程序),我如何确定哪些关键用户按下了?按下表格上的任意位置
例如,他们按下 “CTRL +Q”(退出),并在程序退出不管。
通常情况下,我必须去KeyDown的表单事件,并在那里做出这种情况。但是如果表单不重点呢?然后CTRL + 问题不起作用。
如何在Windows窗体应用程序中执行此操作?我相信这很简单,但找不到方法。
无论焦点在哪里(只要他们正在使用应用程序),我如何确定哪些关键用户按下了?按下表格上的任意位置
例如,他们按下 “CTRL +Q”(退出),并在程序退出不管。
通常情况下,我必须去KeyDown的表单事件,并在那里做出这种情况。但是如果表单不重点呢?然后CTRL + 问题不起作用。
如何在Windows窗体应用程序中执行此操作?我相信这很简单,但找不到方法。
你所描述的通常被称为系统范围的热键。
Windows窗体本质上不支持系统范围的热键,这意味着您需要手动注册并通过本机RegisterHotkey
函数或使用第三方库(如Shortcut)管理每个系统范围的热键。
如果您选择手动注册和管理每个系统范围的热键here is an article和here is a screencast,那应该对您有所帮助。
(完全披露:捷径是我的一个项目,就像截屏视频一样)。
是的! [THIS](https://www.youtube.com/watch?v=dvtV3jc4maY)您给我的视频提供了更多我需要的信息,这正是我想要的,谢谢! – BlazE
你的问题不清楚 - 但鉴于这句话:
如何确定按下哪个键的用户,无论身在何处是焦点(只要他们使用的应用程序)?
我打算假设您不是在寻找一个系统全局热键,而只是一个应用程序全局热键。
如果您只有一个表单,则只需将表单的KeyPreview属性设置为true即可。
即使窗体上的控件具有焦点,这也会将所有按键事件(KeyDown等)发送到窗体的效果。
然后你可以简单地实现你的KeyDown处理程序,就像你在问题中提到的那样。
如果您有多个表单,那么您可能需要在每个表单上执行此操作。
你是什么意思“如果表单没有集中”呢?你有多种形式,或者你的意思是另一个应用程序可能关注?你是否需要在表单上将KeyPreview设置为true? – Blorgbeard