我有一个程序用Edit1.CopyTOClipboard 后想把clipboard上的数据copy到光标所在的位置。如何做呢?

解决方案 »

  1.   

    在要获取信息的控件中填写"OnMouseMove"事件获取Clipboard中内容!
      

  2.   

    不是在自己的程序,要去到其他windows应用程序的光标位置。
      

  3.   

    另外问问如果想把一个字符串,而不是一个控件内的字符写到clipboard如何写呢?
      

  4.   

    下面这段可以了:将剪贴板的文字插入到记事本中去,其它的编辑控件可以作类似处理
    uses  ClipBrd;var
      npHandle:HWND;
      hEditInNp:HWnd;
      cb:TClipboard;
      iStr:PChar;
    begin
      //首先找到记事本中编辑框的句柄
      npHandle:=FindWindowEx(0,0,'Notepad',nil);
      hEditInNp:=FindWindowEx(npHandle,0,'Edit',nil);
      if hEditInNp0 then
        Exit;
      
      //取出剪贴板中的文字信息,你可以自己加一些格式的验证
      try
        Tcb:=TClipBoard.Create;
        iStr:=PChar(tcb.AsText);
      finally
        tcb.Free;
      end;
      
      //利用EM_ReplaceSel消息将文本插入,这个消息的作用是
      //用指定文本替换编辑框的选定文字,如果没有选定文字就会插入到光标位置
      //如果要替换所有文字要用WM_SetText了
      SendMessage(hEditInNP,EM_REPLACESEL,0,LongInt(iStr));
    end;给分儿吧,虽然少点儿,呵呵开玩笑的,你可以试试这段代码
      

  5.   

    还有,不太明白你后面一个问题的意思,是说如果是编辑控件就有CopyToClipBoard而字符串没有,这时怎么把单独一个字符串复制到剪贴板是吧?如果是这样可以用TClipBoard的SetTextBuffer方法
    比如:你的剪贴板对象.SetTextBuffer(PChar(你的字符串));
      

  6.   

    谢谢gh——fei的帮助。我用过后,可以粘贴到notepad。但假如需要粘贴到其他任一程序的输入界面的控件,事先并不知道是什么程序。如何从粘贴板粘贴呢?
      

  7.   

    其实我就想模拟ctrl-c和ctrl-v的操作。但如果直接模拟键盘输入的话,假如系统快捷键改变,就不能正常操作了。以上两个操作windows系统本身应该有函数可以调用,但我还不会,希望有机会能向大家学习学习。谢谢了。
      

  8.   

    提供个思路吧,也许可行,你试试首先定义全局的热键,无论用键盘钩还是什么方法,规定好复制、粘贴,
    复制的过程可以用
    SendMessage(目前控件的句柄,wm_copy,0,0);//你还是看一下wm_copy的参考吧,不记得了
    在复制的源控件里按下你定义好的复制键,执行就执行以上操作
    粘贴的过程可以用上面的回复,在复制的目标控件里按下定义好的粘贴键,就执行该操作关键是获得这些控件的句柄,你可以参考一下FindWindowEx、GetForegroundWindow等函数的用法,就不帮你验证了,呵呵希望有帮助