Winapi 全局标识上次按下修改器键的时间

Winapi 全局标识上次按下修改器键的时间,winapi,hotkeys,Winapi,Hotkeys,关于Windows,我有一个奇怪的问题:是否有任何方法可以全局确定上一次按下任何键,特别是修改键(akaalt)的时间,而无需求助于驱动程序或内核模式代码 一些背景:我已经注册了一个全局快捷方式(alt+`),并在执行时成功地运行了代码。目前,我使用一些非常容易出错的启发式方法来确定用户是否在按住alt键的同时反复按下并释放backtick键,或者自上次调用热键处理程序以来用户是否同时按下并释放了这两个键 我希望更准确地确定,自从上次调用我的处理程序以来,alt键是否已被释放。能够唯一地识别最后

关于Windows,我有一个奇怪的问题:是否有任何方法可以全局确定上一次按下任何键,特别是修改键(aka
alt
)的时间,而无需求助于驱动程序或内核模式代码

一些背景:我已经注册了一个全局快捷方式(alt+`),并在执行时成功地运行了代码。目前,我使用一些非常容易出错的启发式方法来确定用户是否在按住alt键的同时反复按下并释放backtick键,或者自上次调用热键处理程序以来用户是否同时按下并释放了这两个键

我希望更准确地确定,自从上次调用我的处理程序以来,alt键是否已被释放。能够唯一地识别最后一次alt键按下的时间是一个显而易见的解决方案。另一种方法是在每次按下alt键的时候记录下这些信息,我认为这是不可能的


我愿意接受所有的想法和建议

您可以安装全局低级键盘挂钩(通过调用、传递)。这允许您全局监视
VK_菜单
VK_菜单
和/或
VK_菜单
键的
WM_键向上
事件。与热键处理程序中记录的时间戳一起,您可以确定热键是同一Alt序列的一部分还是新序列的一部分:如果
WM_KEYUP
事件的时间戳大于以前的热键输入,则用户启动了新的Alt+`序列,否则,这是同一序列的延续。

几乎可以肯定,当按下某个键时,windows不会在内部节省时间。您可以调用
SetWindowsHookEx(WH\u KEYBOARD\u LL,)
并在内部监视按键和时间低级键盘挂钩是全局挂钩。它在系统确定输入应该转到哪个窗口之前就钩住了输入事件。@RbMm如果您发布它,我很乐意接受它作为答案,因为您在IInspectable之前就提到过这一点。恐怕您误解了我的问题。我已经在使用
RegisterHotKey
,它工作得很好。我试图通过这个API提供的功能获取更多信息。@MahmoudAl Qudsi:的确,我做到了。即使你作出澄清,我也无法理解。如果您设置了一个全局热键,则每当按下它时,它都会调用处理程序。您可以在处理程序中存储上次按下该按钮的时间。你为什么不呢?当然,我在储存时间。我为alt+`设置了一个热键,但热键回调(显然)是以相同的方式调用的,无论用户是否按下并释放alt和backtick,或者用户是否按住alt并反复按下并释放backtick。我需要区分两者以提供不同的结果。最好的例子是alt-tab,如果您使用alt-tab,alt-tab,则其行为不同于alt-tab,tab。