以下是代码:
procedure TForm1.Button2Click(Sender: TObject);
begin
  edit1.SetFocus;
  keybd_event(ord('.'), 0, 0 ,0);
  keybd_event(ord('.'), 0, KEYEVENTF_KEYUP,0);
end;本身这个edit并没有屏蔽什么按键,用手去按句点键能出现句点.我的机器是win2000.
请教各位帮忙看一下,或在您的机器上试一下看看. 多谢!

解决方案 »

  1.   

    不知道哦,把'.'换成'A',输出的是'a'...换成'a',输出的是'1'.....
        如果只是要输出字符,还是用sendmessage(edit1.Handle,wm_char,ord('.'),0)好
      

  2.   

    但是并不确定接收的对象是哪个edit,所以用sendmessage()也不是太好. 我是在写一个procedure,发现KeyBoard('12.34') 得到的是1234,才发现这个问题,不知道根本原因在哪.
    //-----------------------------
    procedure KeyBoard(kbstr:String);   //用代码方式摸拟键盘输入
    var
      i,j:Integer;
    begin
      for i:=1 to length(kbstr) do
      begin
        j:=ord(kbstr[i]);
        keybd_event(j, 0, 0 ,0);
        keybd_event(j, 0, KEYEVENTF_KEYUP,0);
        Sleep(20);
      end;
    end;
      

  3.   

    我也测试了一下keybd_event(它好像是个DLL输出的API),的确出现了 cyp207(cyp207) 所说的问题。不清楚啊。就算用ord('.')的值46放进去也还是什么也没有。sendmessage的确是很见效。
      

  4.   

    好象Keybd_event也不能模拟“alt+↑(方向键向上)”!!!!
      

  5.   

    46,刚好也等同于 'delete' 键,真是怪怪的.
    最后只好用了sendmessage,简直就是铁板钉钉,不会生出那么多意想不到的结果.