WM_KEYDOWN 的wParam很简单,就是虚键值.lParam比较烦.<br>lParam是一个long integer,占用两个字节,共32bit.帮助上讲:<br>0-15 bit:击键的重复率.在键盘上按下一个键时由于会持续一段时间,所以键盘会<br> 发出多次的信号.计算机在接受信号时会使用抖动方法确认是一次击键.<br>16-23 bit:扫描码<br>24 bit:如果是extend key,=1<br>25-28 bit:保留<br>29 bit:对于keydown消息总是0<br>30 bit:前一个键的状态,如果在发送消息之前已经按下,=1<br>31 bit:对于keydown消息总是0<br>我试了一下,i键的lParam按以上方法设:<br>memo1.perform(WM_KEYDOWN,$49,$40170008);可以检测到<br>BTW:VK_I编译不能通过,为什么?<br>memo1.perform(WM_KEYDOWN,vk_control,$01230008);<br>但是ctrl,shift就监测不到.我还看了一下keybd_event传过来的lParam,是1.<br>我改成memo1.perform(WM_KEYDOWN,vk_control,1);也不行.<br><br>keybd_event可行.不过要先把焦点转移到memo1.<br>memo1.setfocus;<br>keybd_event(vk_control,0,0,0);<br>keybd_event(vk_shift,0,0,0);<br>keybd_event($49,0,0,0);<br>keybd_event($49,0,KEYEVENTF_KEYUP,0);<br>keybd_event(vk_shift,0,KEYEVENTF_KEYUP,0);<br>keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);<br><br>