我正在尝试用一小段代码帮助一个残疾人,以帮助他更轻松地玩游戏。他仅限于轨迹球和一个按钮。
目前他使用屏幕键盘并设法使用它玩其他游戏。我创建了一小段代码来尝试让他的生活更轻松。它使用悬停按钮作为键。当鼠标指针进入按钮时,它会向下发送按键,当它离开按钮时它会向上发送按键。
我有这个工作,我想(或希望)他会喜欢它。当我测试它时它工作得很好。
我想为它添加一个功能。如果他在我的控制下点击,我想发送一个不同的击键。没问题,我可以做到。然而,当我这样做时,焦点从游戏转移到我的控制。
我在MSDN上发现了这个:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/48737c2b-7e6f-4ade-ac1c-7dd2f5cc2b88/
这可以阻止我的窗口激活,但它仍然会导致游戏失去焦点。我可以把焦点放回到游戏中,但我更愿意,如果它永远不会失去焦点。
我在C#和WPF编码。
任何人对你如何做到这一点都有任何想法?
John Fenton
答案 0 :(得分:2)
钩住一些低级鼠标和键盘钩子,你的应用程序不需要窃取焦点并将其还原。
请看this pastie of a simple WPF app,an article by Stephen Toub非常基于{{3}}。
每当您在任何地方左键单击时,都会发送第二次左键单击,因此您可以有效地双击。您可以通过在用户点击时隐藏您的应用来实现您的目标,从而使您的应用永远不会窃取焦点。然后检测点击的位置,并确定是否按下了其中一个按钮,并采取相应的行动。
我意识到我正在挖掘过去,但希望有人会觉得这个答案很有帮助。干杯,对你来说有利于你的编程,以帮助人类同伴!
答案 1 :(得分:1)
您可以尝试取消此博客中提及的事件PreviewLostKeyboardFocus:
http://immortalratblog.blogspot.com/2008/03/canceling-keyboard-focus-change-in-wpf.html
我猜测重点是模拟按键失去了?