我有一个与Windows有关的奇怪问题:有没有办法全局确定最后一次按键,或者特别是修改键(aka alt
)被按下而没有求助于驱动程序还是内核模式代码?
一些背景知识:我已经注册了一个全局快捷方式(alt +`)并在执行时成功运行代码。目前,我使用了一些非常容易错误的启发式方法,以确定用户是否一直按下并释放反引号键,同时一直按住alt键,或者自上次调用热键处理程序以来用户是否按下并释放了两者
我希望更精确地确定自上次调用处理程序以来是否已释放alt键。能够唯一地识别最后一次alt按键的时间是一个明显的解决方案。另一个是以某种方式挂钩每个alt键按下来记录该信息,我认为这是不可能的。
我对所有想法和建议持开放态度!
答案 0 :(得分:1)
您可以安装全局低级键盘挂钩(通过调用SetWindowsHookEx,传递LowLevelKeyboardProc)。这样,您就可以全局监控WM_KEYUP
,VK_MENU
和/或VK_LMENU
密钥的VK_RMENU
事件。与热键处理程序中记录的时间戳一起,您可以确定热键是否是同一 Alt 序列的一部分或新序列:如果WM_KEYUP
事件的时间戳大于之前的时间戳在热键输入时,用户启动了一个新的 Alt + `序列,否则它将继续相同的序列。