我用postMessage(hw,WM_KEYDOWN, $60,0);
不能模拟出小键盘的0按键
但是用这个方法可以模拟出其他的按键,除了小键盘
哪位朋友有更好的方法,或者那位朋友有直接读写键盘I/O的资料?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      sendmessage(edit1.Handle,WM_CHAR,$30,1);
      sendmessage(edit1.Handle,WM_CHAR,$31,1);
      sendmessage(edit1.Handle,WM_CHAR,$32,1);
      sendmessage(edit1.Handle,WM_CHAR,$33,1);
    end;
      

  2.   

    小键盘的按键好像不能响应windows的消息。
      

  3.   

    如果想模拟小键盘上的按键要用
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit1.SetFocus;
      keybd_event(VK_NUMPAD0,MapVirtualKey(VK_NUMPAD0,0),0,0);
      keybd_event(VK_NUMPAD0,MapVirtualKey(VK_NUMPAD0,0),KEYEVENTF_KEYUP,0);//
    end;
      

  4.   

    keybd_event(48,0,KEYEVENTF_EXTENDEDKEY,0); //KEYDOWN,keybd_event(48,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); //KEYUP
      

  5.   

    可以用ASCII码控制
    0 ASC 48 键值 96
    1 ASC 49 键值 97
    2 ASC 50 键值 98
    3 ASC 51 键值 99
    4 ASC 52 键值 100
    5 ASC 53 键值 101
    6 ASC 54 键值 102
    7 ASC 55 键值 103
    8 ASC 56 键值 104
    9 ASC 57 键值 105
    . ASC 46 键值 110
    / ASC 47 键值 111
    * ASC 42 键值 106
    - ASC 45 键值 109
    + ASC 43 键值 107
    enter ASC 13 键值 13
      

  6.   

    keybd_event就可以
    小键盘的键值楼上贴的就是正确的,其他的可以在keydown事件里跟踪查询
    我奇怪的是为什么非要小键盘?模拟按键的小键盘0和key=48的大键盘0有区别么?
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit1.SetFocus;
      keybd_event(VK_NUMPAD0,MapVirtualKey(VK_NUMPAD0,0),0,0);
      keybd_event(VK_NUMPAD0,MapVirtualKey(VK_NUMPAD0,0),KEYEVENTF_KEYUP,0);//
    end;
    昨天刚刚贴过这个答案