15

我正在尝试用一点代码来帮助残疾人,以帮助他更轻松地玩游戏。他仅限于一个轨迹球和一个按钮。

目前,他使用屏幕键盘并设法使用它玩其他游戏。我创建了一小段代码来尝试让他的生活更轻松。它使用悬停按钮作为键。当鼠标指针进入按钮时,它向下发送键,当它离开按钮时,它向上发送键。

我有这个工作,我认为(或希望)他会喜欢它。当我测试它时,它工作得很好。

我想向它添加一项功能。如果他在我的控制下单击,我想发送不同的击键。没问题,我能做到。但是,当我这样做时,窗口焦点从游戏转移到我的控制。

我在 MSDN 上找到了这个:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/48737c2b-7e6f-4ade-ac1c-7dd2f5cc2b88/

这可以防止我的窗口激活,但它仍然会导致游戏失去焦点。我可以将焦点重新回到游戏上,但我希望它永远不会失去焦点。

我正在用 C# 和 WPF 进行编码。

有人对您如何做到这一点有任何想法吗?

约翰芬顿

4

2 回答 2

3

挂钩一些低级的鼠标和键盘挂钩,您的应用程序不需要窃取焦点并将其返回。

看看这个简单的 WPF 应用程序,它很大程度上基于Stephen Toub 的一篇文章

每当您在任何地方左键单击时,都会发送第二次左键单击,因此您可以有效地双击。您可以通过在用户点击时隐藏您的应用来实现您的目标,这样您的应用就不会窃取焦点。然后检测点击的位置,并确定您的某个按钮是否会被按下,并采取相应的行动。

我意识到我正在从过去中挖掘出来,但希望有人会发现这个答案有帮助。干杯,对你有好处,因为你把你的程序变成了帮助人类的同胞!

于 2011-02-11T20:31:52.630 回答
1

您可以尝试取消此博客中提到的事件 PreviewLostKeyboardFocus:

http://immortalratblog.blogspot.com/2008/03/canceling-keyboard-focus-change-in-wpf.html

我猜模拟按键会失去焦点?

于 2011-02-14T03:06:49.817 回答