谁能帮我详细解释WM_KEYDOWN消息的第二个参数?(200分)

  • 主题发起人 brightangel
  • 开始时间
B

brightangel

Unregistered / Unconfirmed
GUEST, unregistred user!
WM_KEYDOWN消息的第二个参数lKeyData(lParam)是什么含义?<br>看了半天帮助文档也没明白:(<br>&nbsp; &nbsp;<br>文档里是这样解释的:<br>0-15 &nbsp;重复计数:重复击键的次数<br>16-23 &nbsp; 扫描码<br>24 &nbsp; 1表示键是扩展键<br>25-26 &nbsp;没占用<br>27-28 &nbsp;只windows用<br>29 &nbsp; &nbsp;内容码 按下alt是1<br>30 &nbsp; &nbsp;先前的键状态 &nbsp;1表示发送消息前已按下键<br>31 &nbsp; 转换状态 &nbsp;0表示按下 &nbsp;1表示 放开<br><br>但看了以后仍觉得有些困惑:<br>如果我想用SendMessage发送一个WM_KEYDOWN消息来模拟按键,第二个参数应该怎么设置?<br>0-15位表示按键次数,那么我设为100,是不是等于发送了100个按键字符,<br>16-23位表示扫描码,但我根本不知道什么扫描码,该怎么办?<br>24位是否表示的是当前按键是ALT和CTRL键与其它键的组合键?<br>还有30位,按键的状态对我模拟键盘按键有影响吗?<br>谢谢!<br>
 
一般来说通过SendMessage或者PostMessage, 你可以把它设为0, 这些对于应用程序<br>来说无所谓.
 
0-15指一直按着键,msg,post的重复次数<br>16-23要问oem的manual<br>24指102扩展键盘上的<br>30有影响的,当send前是按下的,是1。
 
wm_keydown 的第一个参数是虚拟键值,它与硬件无关。<br>但它区分不了大小写,也区分不了象左 shift,右 shift;<br>小键盘和大键盘两组数字键.扫描码就是干这个用的,你要区分<br>这些键就只能用扫描码了,但这取决于键盘的厂商与型号.我想<br>大部分的软件这个参数都没什么关系,设为0即可,除非你在作<br>射击游戏......
 
谢谢各位!
 
顶部