我尝试使用wParam提供的虚拟密钥代码,但是效果不好:
然后我看到lParam会给我一个扫描码以及一个“扩展”标志,当这样计算时,它似乎会为键盘上的每一个键产生不同的值:
value = (lParam & 0x01FF0000) >> 16;
对于键盘上的相同键,即使在各种键盘/系统中,该值是否始终相同?
答案 0 :(得分:1)
不同键盘的扫描码可能不同。最好使用虚拟键码。来自http://msdn.microsoft.com/en-us/library/ms646267(v=vs.85).aspx:
分配给键盘上的每个键是一个称为扫描的唯一值 代码,键盘上键的设备相关标识符。一个 当用户键入一个键时,键盘会生成两个扫描码 当用户释放密钥时,用户按下键和另一个键。
键盘设备驱动程序解释扫描代码并进行翻译 (映射)它到虚拟键代码,由与之定义的设备无关值 识别密钥用途的系统。