如果设置了最高有效位,则键按下,如果设置了最低有效位,则在上一次调用 GetAsyncKeyState 后按下了键。但是,您不应该依赖最后一种行为;[..]
尽管返回值的最低有效位指示自上次查询以来是否已按下键,但由于 Windows 的抢先式多任务处理性质,另一个应用程序可以调用 GetAsyncKeyState 并接收“最近按下”位而不是您的应用程序。严格保留返回值的最低有效位的行为是为了与 16 位 Windows 应用程序(非抢占式)兼容,不应依赖该应用程序。
在我的程序中,我只对密钥当前所在位置的返回值感兴趣。即,如 msdn 所定义,当设置了最低和最高有效位 (-32767) 时(这就是它现在的工作方式。)。但是,我是否还必须检查 32767 (没有最低 sig. 位的值)以防万一,就像它说的那样,最低有效位被另一个程序截获,或者“不可靠”,无论这意味着什么。