edit1.text := 'ABC';
edit1.SelectAll;
edit1.CopyToClipboard; 
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('V'), 0, 0, 0);
keybd_event(Ord('V'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);edit1.text := 'test';
edit1.SelectAll;
edit1.CopyToClipboard; 
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('V'), 0, 0, 0);
keybd_event(Ord('V'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
为什么執行結果卻是 testtest 而不是ABCTEST

解决方案 »

  1.   

    “为什么”我也不知道。下面是用一个全局变量I,及一个timer测试的,可以实现:
    var I:integer=1;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    sleep(1000);
    edit1.SetFocus;
    if I mod 2 >0 then
       begin
          edit1.text := 'ABC';
          edit1.SelectAll;
          edit1.CopyToClipboard;
          edit2.SetFocus;
       end else begin
          edit1.text := 'test';
          edit1.SelectAll;
          edit1.CopyToClipboard;
          edit3.SetFocus;
       end;
       keybd_event(VK_CONTROL, 0, 0, 0);
       keybd_event(Ord('V'), 0, 0, 0);
       keybd_event(Ord('V'), 0, KEYEVENTF_KEYUP, 0);
       keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
       inc(i);
    end;procedure TForm1.Button2Click(Sender: TObject);//测试
    begin
       timer1.Enabled:=true;
    end;
      

  2.   

    实际上不用keybd_event,如下就可以实现你要的ABCtestedit1.text := 'ABC';
    clipboard.AsText:=edit1.Text;
    edit2.PasteFromClipboard;
    //clipboard.Clear;
    edit1.text := 'test';
    clipboard.AsText:=edit1.Text;
    edit2.PasteFromClipboard;
      

  3.   

    两个 PasteFromClipboard; 必须同时运行 而且已经有一个 一个timer了
      

  4.   

    按我在楼上的楼上的代码,不用timer,就可实现
      

  5.   

    PasteFromClipboard; 必须同时运行  也就是说 运行了一个 PasteFromClipboard; 接下来 就要运行 另外一个 
    我用循环 还是不成
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i:integer;
    begin
    i:=1;
    while i<3 do
    begin
    sleep(1000);
    edit1.SetFocus;
    if I mod 2 >0 then
       begin
          edit1.text := 'ABC';
          edit1.SelectAll;
          edit1.CopyToClipboard;
          edit2.SetFocus;
       end else begin
          edit1.text := 'test';
          edit1.SelectAll;
          edit1.CopyToClipboard;
          edit3.SetFocus;
       end;
       keybd_event(VK_CONTROL, 0, 0, 0);
       keybd_event(Ord('V'), 0, 0, 0);
       keybd_event(Ord('V'), 0, KEYEVENTF_KEYUP, 0);
       keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
       inc(i);
     end;
    end;
      

  6.   

    edit1.text := 'ABC';
    clipboard.AsText:=edit1.Text;
    edit2.PasteFromClipboard;
    //clipboard.Clear;
    edit1.text := 'test';
    clipboard.AsText:=edit1.Text;
    edit2.PasteFromClipboard;
    ------------------------这不就是 “PasteFromClipboard; 必须同时运行  也就是说 运行了一个 PasteFromClipboard; 接下来 就要运行 另外一个”  吗?
      

  7.   

    程序里 必须用keybd_event  这也是发愁的地方啊 一用keybd_event  就两次输出的植一样
      

  8.   

    ok 解决了 套用了你的哪个timer 使用两个timer