我希望能够在Windows上拦截(并执行任意处理)自动重复按键操作。我想知道如何实现键盘自动重复,以便我知道我有哪些选项。即我可以截取:
更新:看起来自动重复在硬件级别生成(不良?),然后由设备驱动程序(see here)覆盖。
答案 0 :(得分:3)
要修改或过滤行为,您可以使用钩子拦截键:
SetWindowsHookEx
使用WH_KEYBOARD
hook procedure收到重复计数(由于按住键)
请注意,低级键盘挂钩(WH_KEYBOARD_LL
)不会收到重复计数。
如果所有窗口都是在同一个trhead中创建的,则可以使用特定于线程的钩子,并避免将钩子过程移动到DLL。
我朦胧地记得重复计数是由键盘本身产生的,LL挂钩发送重复的keydown事件 - 但我可能会弄错。在DOS下,当拔下并重新插入DIN或PS / 2键盘时,BIOS或BIOS调用中设置的按键重复率和时间确实恢复为默认值。我不确定为什么你需要确切知道。
答案 1 :(得分:0)
我建议你可能想要编辑你的问题......你的实际问题是“如何在$ {yourLangauge}中抑制Windows上的自动重复”...
我的回答是,我没有线索,我只是在汇编程序(MASM 80286)中完成了......即使那时我在BBS上找到了解决方案(有人记住它们)和刚用过它。从内存中,拦截必须在设备驱动程序级别完成。
autorepeat(100美元说它是汇编程序)的实现可能不会让人感到压抑......那就是微软将这些卡片放得非常接近它的胸部。
干杯。基思。
编辑:我只是想......现在各种各样的设备之间的技术可能会有所不同......哦,好吧!
答案 2 :(得分:0)
然而,这听起来像“与编程不相关”。 转到控制面板中的“辅助功能选项”。 选择“过滤器密钥”组下的“设置”,在这里,您可以关闭该计算机上该用户的重复密钥。
希望这就是你要找的东西。
P.S。以上针对Windows XP的说明。