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;记得在程序里写模拟按键代码的时候一定要设置你要复制的内容获得焦点
这个跟发送消息不一样,发送消息的时候不必使对象获得焦点,其实我一楼的代码可以进一步精简为procedure TForm1.Button1Click(Sender: TObject); begin SendMessage(edit1.Handle,WM_COPY,0,0); SendMessage(edit2.Handle,WM_PASTE,0,0); end;
begin
Edit1.SelectAll;
SendMessage(edit1.Handle,WM_COPY,0,0);
edit2.SetFocus;
edit2.SelectAll;
edit2.PasteFromClipboard;
end;
如果这个没有用, 我想KeyDown事件中也不会有用的, 最终Windows也是调用
WM_compy消息的.
另外SendMessage要用以下的格式;Sendmessage(控件.handle,WM_COPY,0,0);
begin
Edit1.SelectAll;
SendMessage(edit1.Handle,WM_COPY,0,0);
SendMessage(edit2.Handle,WM_PASTE,0,0);
end;
因为我得软件你用Ctrl+C可以实现复制,但是用WM_Copy就不行!所以一定要Ctrl+C消息,WM_Copy就不要再回复了,这个我会用,主要是CTRL+C消息如何发送?
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;
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;记得在程序里写模拟按键代码的时候一定要设置你要复制的内容获得焦点
begin
SendMessage(edit1.Handle,WM_COPY,0,0);
SendMessage(edit2.Handle,WM_PASTE,0,0);
end;