Win32键盘在没有聚焦时管理密钥

时间:2017-05-09 00:00:30

标签: c++ windows winapi keyboard-events

我有一个输入管理器,可以通过消息很好地跟踪键盘状态

WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP

所以我知道例如何时按下左控件。 但是,如果窗口失去焦点并且在再次获得焦点之前释放该键,则不会出现“释放键”消息。

这似乎是每个人都有的非常尴尬的问题,所以我觉得我错过了一些东西。现在,当窗口获得焦点时,我有一个仅使用GetKeyboardState的修复程序。但感觉这有点矫枉过正。

现在我也看到有一个“LowLevelKeyboardProc”可以通过简单地检测键来帮助解决这个问题。但是已经只是从名称中感觉到使用它有一些缺点(比如减慢所有应用程序的所有输入?)。

我是否还有其他一些解决方案,如果没有,这两种解决方案中哪一种更好?

1 个答案:

答案 0 :(得分:-1)

您需要查找SetWindowsHookEx的MSDN文档。基本上你需要做的是使用这个函数和一个回调程序(这是你的应用程序的一部分),当关键状态发生变化时,它会被运行。