我有一个输入管理器,可以通过消息很好地跟踪键盘状态
WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP
所以我知道例如何时按下左控件。 但是,如果窗口失去焦点并且在再次获得焦点之前释放该键,则不会出现“释放键”消息。
这似乎是每个人都有的非常尴尬的问题,所以我觉得我错过了一些东西。现在,当窗口获得焦点时,我有一个仅使用GetKeyboardState
的修复程序。但感觉这有点矫枉过正。
现在我也看到有一个“LowLevelKeyboardProc”可以通过简单地检测键来帮助解决这个问题。但是已经只是从名称中感觉到使用它有一些缺点(比如减慢所有应用程序的所有输入?)。
我是否还有其他一些解决方案,如果没有,这两种解决方案中哪一种更好?
答案 0 :(得分:-1)
您需要查找SetWindowsHookEx的MSDN文档。基本上你需要做的是使用这个函数和一个回调程序(这是你的应用程序的一部分),当关键状态发生变化时,它会被运行。