WIndows API中的两个键状态函数GetKeyState()
和GetAsyncKeyState()
都基于密钥上/下消息而不是密钥的物理状态来确定密钥状态。物理密钥状态
我正在处理输入的程序,使用SendInput()
释放修改键(alt,ctrl等等),发送输入,然后重新按下修改键。
问题是,我不知道在发送输入后是否仍然按下修饰键,因为我发送了键入事件,并且上述两个函数都返回了键不管物理密钥的状态。因此,如果我假定它们仍然处于关闭状态,则用户将留下一个悬而未决的ctrl-down,直到用户再次按下并释放cntl(或任何修改键)为止。否则,即使物理键仍然关闭,键仍可能保留。
因此,有什么方法(最好没有任何太低的水平)来检测物理键状态。仅限Windows的方法很好。关键监控(听取关键事件)实际上是不可能的(或者至少真的,真的不可取)。
“GetAsyncKeyState()仍然适用于键上/下消息(不是物理键状态)”与[MSDN文档](http://msdn.microsoft.com/en-us/library/windows/desktop/ ms646293(v = vs.85).aspx) –
这是无关紧要的。这是它的工作原理。一旦发布关键事件,GetAsyncKeyState()的返回值就会改变。 –
他们的钥匙掉下来了,信息就发布了。是的,这几乎是发生了什么! –