我想用一个label或paintbox控件,输出用户的键盘字符。
比如用户敲某个键,label的caption就显示那个字母。我先试了Hook,可用chr(hook的wparam) 出来都是大写字母。
还要监控capslock和shift,麻烦又试了写procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
然后输出mssage.charcode
可根本没反应啊。怎么让这个东西起作用啊?

解决方案 »

  1.   

    如果是在程序没获得焦点的情况下也能输出用户键盘敲击的字母到标签,貌似必须hook
      

  2.   

    谢谢,刚刚测试,删掉form上的scrollbar和button后,keydown message起作用了。
    似乎是焦点的问题,但使用form.setfocus 却不行。
      

  3.   

    已经用hook实现,但还有新的问题:
    如何把焦点设置到label或paintbox上?
    目前是排除法,即焦点不在button等有焦点的控件上,似乎比较笨。
    还有菜单等无焦点控件。应该是用户点击了其它任何控件,焦点就丧失,可是怎么实现啊?
    难道还要hook鼠标,检测点击了超出本控件的范围?