WM_KEYDOWN参数lParam=lkeydata ( 积分: 100 )

  • 主题发起人 主题发起人 东门飚血
  • 开始时间 开始时间

东门飚血

Unregistered / Unconfirmed
GUEST, unregistred user!
lParam=lkeydata.<br>怎么自已构造lkeydata?<br>看SDK上,只说明了lkeydata是32byte。<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>相当于一个longint。<br><br>我的问题就是,如何构造这个lkeydata????<br>sendmessage中的lparam是longint型
 
lParam=lkeydata.<br>怎么自已构造lkeydata?<br>看SDK上,只说明了lkeydata是32byte。<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>相当于一个longint。<br><br>我的问题就是,如何构造这个lkeydata????<br>sendmessage中的lparam是longint型
 
......自已解决了
 
那也说出来大家学习学习嘛:)
 
太恶心,我也不太明白,大概是说WM_KEYDOWN<br>The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed. <br>非系统键按下的时候提交给windows,非系统键按下的时候alt键有没有按下<br>29 &nbsp; &nbsp;内容码 按下alt是1否则为0<br>var<br> &nbsp;l: integer;<br>begin<br> &nbsp;l := 0;<br> &nbsp;l := l or $20000000;//那从28位开始为0010 十六进制 $20 ,这样29位就置1了<br> &nbsp;Perform(WM_KEYDOWN,VK_UP,l);//这里传给窗体的按键为alt + 向上箭头<br>end;<br>但是ctrl和shift怎么传输就不知道了
 
var<br> &nbsp;s:string;<br><br> &nbsp;perform(wm_keydown,0,LParam(s));//参数强制转换一下不就可以了嘛
 
我的解决办法是<br>var<br>lkeydata:array[0..31] of byte;<br>然后按SDK上的每一位赋值。<br>最后<br>sendmessage(handle,WM_XX,wparam,lparam(@lkeydata));<br><br>ctrl shift
 
后退
顶部