【发布时间】:2011-04-24 15:13:34
【问题描述】:
我有一个显示键盘并测试按键是否被按下的应用程序。我遇到的问题是,当按下箭头按钮/选项卡等某些键时,键盘图形失去焦点并开始访问菜单项/等。我尝试在 MainWindow 中注册预览鼠标按下事件并设置 e.handled = true。但这并不总是有效。如果还有一种方法可以禁用 Windows 按钮,那就太好了。
【问题讨论】:
我有一个显示键盘并测试按键是否被按下的应用程序。我遇到的问题是,当按下箭头按钮/选项卡等某些键时,键盘图形失去焦点并开始访问菜单项/等。我尝试在 MainWindow 中注册预览鼠标按下事件并设置 e.handled = true。但这并不总是有效。如果还有一种方法可以禁用 Windows 按钮,那就太好了。
【问题讨论】:
我认为您需要了解解决方案的操作系统代码。操作系统对某些键的处理与正常情况不同,因此您可能无法在某个键的值上达到峰值,甚至在它从您的应用程序中夺走控制权之前它已被按下。
当我为 CP/M 编写机器代码 BIOS 例程时,我看到了这种事情。 Windows 比这更复杂。当我开始使用 Windows 3.1 时,我放弃了编写代码来控制硬件。
【讨论】:
我用过这个类:
我将第 99 行替换为以下代码:
return EnableKeyboard ? InterceptKeys.CallNextHookEx(hookId, nCode, wParam, lParam) : (IntPtr) 1;
EnableKeyboard 由用户设置。
【讨论】: