在我的 WPF 应用程序中捕获没有焦点的按键事件
我在 WPF 中开发了一个屏幕键盘。我需要夺取钥匙 新闻事件(通过键盘)以跟踪 Caps Lock、Shift 等等(无论它们是否被按下)。 请注意,当任何其他应用程序时,我的应用程序会失去焦点 (比如记事本)被打开。
谁能建议如何在 WPF 中实现这一目标? 简而言之,我的 WPF 应用程序甚至需要捕获按键事件 虽然它没有焦点。
I have developed an On Screen Keyboard in WPF. I need to capture the key
press event (via Key Board) in order to keep a track of Caps Lock, Shift
etc (whether they are pressed).
Please note that my application loses focus when any other application
(say notepad) is opened.
Could anyone suggest how to achieve this in WPF?
in short, my WPF application needs to capture the key press events even
though it does not have focus.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您希望 WPF 应用程序能够检测和处理按键,即使当前未激活或聚焦在屏幕上,您也可以在 Windows 中实现所谓的全局热键。
可以将以下两个方法添加到 C# 类中,以便能够注册和取消注册全局热键:
示例代码
参考
If you want your WPF application to be able to detect and handle key presses even when it is not currently activated or focused on the screen you could implement what is known as global hot keys in Windows.
The following two methods can be added to a C# class to be able to register and unregister a global hot key:
Sample code
Reference
这对我很有帮助: 禁用 WPF 窗口焦点
它与您的问题不完全相同,他试图在没有获得焦点的情况下捕捉事件,但这是一个很好的起点
This was helpful for me : Disable WPF Window Focus
Its not exactly the same as your problem, he is trying to catch an event without getting focus , but its a good starting point
我使用了一个简单的代码:
在 xaml 中,我使用了一个名为 MyTestKey 的 KeyDown 事件。
这就是我检查数字 1 的 keydown 例程的样子:
这是获取任何键的简单方法。我希望这有帮助。
I use a simple code behind:
In the xaml I use a KeyDown event called MyTestKey.
This is what the keydown routine looks like where I check for the number 1:
This is an easy way to get to any key. I hope this helps.