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()的返回值就會改變。 –
他們的鑰匙掉下來了,信息就發佈了。是的,這幾乎是發生了什麼! –