1 Memo1 里已经有想粘贴的数据了
2在函数 procedure TForm1.hotykey(var msg: TMessage)里if msg.LParamLo = MOD_ALT then  //如果是ALT键
  begin
;        CurNum:=msg.LParamhi;
     case  CurNum of
  53 :
      begin
       showmessage('d');
    Clipboard.AsText:=self.Memo1 .Text;
       
       keybd_event(VK_Control,   MapVirtualKey(VK_Control,   0),   0,   0);
    keybd_event(ord('V'),   MapVirtualKey(ord('V'),   0),   0,   0);
    keybd_event(ord('V'),   MapVirtualKey(ord('V'),   0),   KEYEVENTF_KEYUP,   0);
    keybd_event(VK_Control,   MapVirtualKey(VK_Control,   0),   KEYEVENTF_KEYUP,0);
  end;
end;/////////////
 如果 加上 showmessage('d'); 让程序停顿一次 就能完成使用 ALT+1 触发 CTRL+V的功能
如果没有这个 showmessage 程序就不好使了、、、、、、、、、、
请问是怎么回事 该如何解决

解决方案 »

  1.   

    判断出ALT+1组合键后先设置一个标志,等ALT键释放后再模拟CTRL+V。
      

  2.   

    发送到当前鼠标 所指示的任意 地方、
    比如说另外一个WORD文件里
      

  3.   

    Clipboard.AsText:=self.Memo1 .Text;
        
      keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
      keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
      keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
      keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP,0);
    我把这些放到了一个定时器里
    ALT+1后激活定时器
    可是还是不好用
      

  4.   

    如果在ALT键处于按下状态时模拟CTRL+V,实际效果是ALT+CTRL+V,所以要等ALT释放后再模拟。
      

  5.   

    多谢 我昨晚查了一晚上 也没查到 如何手动释放
    请问 能提供下 BAIDU 的  关键字 吗? 
      

  6.   

    這樣呢:keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);