一般按键是发送两条消息KEY_DOWN KEY_UP按住就是KEY_DOWN KEY_DOWN KEY_DOWN KEY_DOWN KEY_DOWN KEY_DOWN KEY_DOWN KEY_DOWN KEY_DOWN 分析wParam为VK_LEFT VK_UP VK_RIGHT VK_DOWN 就是方向键。

解决方案 »

  1.   

     用两个全局变量:
     KeyCode:Word;
     IsSameKey:Boolean;
     然后在Keydown事件中比较Key是否等于KeyCode 
    if key=KeyCode then
    Begin
      IsSame:=True;
      {
     ......
      }
    End else IsSame:=False;
      

  2.   

    to :Xb_xj(2页3皮)
    我的想法是这样: 允许用户连续按多次同一个键,但不允许用户按住某个键不松手,你的办法好像不行吧? 
      

  3.   

    OnKeyDown 事件下对安下的键做标志例如左键安下设定bLeftKey:=true;(bLeftKey设定为布尔型)OnKeyUp 事件下对抬起的键做标志例如左键抬起设定bLeftKey:=false;(bLeftKey设定为布尔型)
    弄个Timer控件 
    检测bLeftKey=true则执行操作!
      

  4.   

    请使用 Direct Input 
    循环检测
      

  5.   

    再加一个全局变量 Times:Word;
    If Key=keyCode then
    begin
      Inc(Times);
      If Times>=次数 then ...
    end;