如何用sendmessage发送Ctrl+C消息?
我用这个不起作用Sendmessage(handle,WM_COPY,0,0);
Ctrl+C我就不会使用这个函数了,应该用WM_KeyDown吧?但是后面两个参数不知道如何写了?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        Edit1.SelectAll;
        SendMessage(edit1.Handle,WM_COPY,0,0);
        edit2.SetFocus;
        edit2.SelectAll;
        edit2.PasteFromClipboard;
    end;
      

  2.   

    Sendmessage(handle,WM_COPY,0,0);
    如果这个没有用, 我想KeyDown事件中也不会有用的, 最终Windows也是调用
    WM_compy消息的.
    另外SendMessage要用以下的格式;Sendmessage(控件.handle,WM_COPY,0,0);
      

  3.   

    另外要先选中后再发送 WM_compy.
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        Edit1.SelectAll;
        SendMessage(edit1.Handle,WM_COPY,0,0);
        SendMessage(edit2.Handle,WM_PASTE,0,0);
    end;
      

  5.   

    刚刚查到的信息,WM_Copy仅仅复制文本,我要复制的内容还有图片、图形等,我已经选中了内容,所以我只要Ctrl+C的消息,怎么调用?我不用WM_COPY!
    因为我得软件你用Ctrl+C可以实现复制,但是用WM_Copy就不行!所以一定要Ctrl+C消息,WM_Copy就不要再回复了,这个我会用,主要是CTRL+C消息如何发送?
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);//选中后点击复制
    begin
        keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
        keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), 0, 0);
        keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), KEYEVENTF_KEYUP, 0);
        keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP,0);
    end;procedure TForm1.Button2Click(Sender: TObject);//点击粘贴
    begin
        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;
      

  7.   


    procedure TForm1.Button1Click(Sender: TObject);
    begin
        edit1.SetFocus;
        edit1.SelectAll;
        keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY or 0,0);
        keybd_event(ord('C'),0,KEYEVENTF_EXTENDEDKEY or 0,0);
        keybd_event(ord('C'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
        keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        edit2.SetFocus;
        edit2.SelectAll;
        keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY or 0,0);
        keybd_event(ord('V'),0,KEYEVENTF_EXTENDEDKEY or 0,0);
        keybd_event(ord('V'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
        keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
    end;记得在程序里写模拟按键代码的时候一定要设置你要复制的内容获得焦点
      

  8.   

    这个跟发送消息不一样,发送消息的时候不必使对象获得焦点,其实我一楼的代码可以进一步精简为procedure TForm1.Button1Click(Sender: TObject);
    begin
        SendMessage(edit1.Handle,WM_COPY,0,0);
        SendMessage(edit2.Handle,WM_PASTE,0,0);
    end;
      

  9.   

    我已经说过了,WM_COPY的消息不好用,我想知道ctrl+C的消息怎么发!算了,我试试模拟按键吧。如果好用,马上给分
      

  10.   

    没有人会用消息的方式发送Ctrl+C吗?