在我的 WPF 应用程序中捕获没有焦点的按键事件
Posted
技术标签:
【中文标题】在我的 WPF 应用程序中捕获没有焦点的按键事件【英文标题】:Capturing Key Press Event in my WPF Application which do not have focus 【发布时间】:2011-05-26 17:59:36 【问题描述】:我在 WPF 中开发了一个屏幕键盘。我需要获取密钥 按下事件(通过键盘)以跟踪 Caps Lock、Shift 等(是否按下)。 请注意,当任何其他应用程序时,我的应用程序会失去焦点 (比如记事本)已打开。
谁能建议如何在 WPF 中实现这一点? 简而言之,我的 WPF 应用程序甚至需要捕获按键事件 虽然它没有焦点。请帮忙。
【问题讨论】:
您必须使用 Windows API 向 Windows 注册键盘挂钩。 blogs.msdn.microsoft.com/toub/2006/05/03/… 【参考方案1】:这对我很有帮助:Disable WPF Window Focus
这和你的问题不完全一样,他试图在没有获得焦点的情况下捕捉一个事件,但这是一个很好的起点
【讨论】:
【参考方案2】:我在后面使用了一个简单的代码:
在 xaml 中,我使用了一个名为 MyTestKey 的 KeyDown 事件。
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
KeyDown="myTestKey" >
这就是我检查数字 1 的 keydown 例程的样子:
private void myTestKey(object sender, KeyEventArgs e)
if ((e.Key == Key.D1) || (e.Key == Key.NumPad1))
//do some stuff here
return;
这是获取任何键的简单方法。我希望这会有所帮助。
【讨论】:
应用非焦点时不起作用,只对焦点应用有效。错误的答案。以上是关于在我的 WPF 应用程序中捕获没有焦点的按键事件的主要内容,如果未能解决你的问题,请参考以下文章