DELphi7 如何实现按一个快捷键就复制当前对象到剪贴板? 就是不管在哪个窗口,哪个程序中,只要选中一段文字或一幅图片,按一个快捷键就把它复制到剪贴板中? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 奇哉怪也!直接Ctrl+C Ctrl+V 不好使吗?Keybd_event 可以模拟键盘,不妨试试可能 直接Ctrl+C不好使啊,我想改进一下。能说详细点吗,把源码给我,最好带注释的,一个是用模拟键盘实现,一个用发送WM_COPY消息实现(本人初学很菜) 看你给5分的份上,给你举个例子 按小键盘【0】键=【Ctrl】+【C】 按小键盘【1】键=【Ctrl】+【V】unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } procedure hotykey(var msg:TMessage); message WM_HOTKEY; end;var Form1: TForm1; id1,id2:Integer;implementation{$R *.dfm}procedure TForm1.hotykey(var msg: TMessage);beginif msg.LParamHi=$060 then //如果按下小键盘 0 键 begin keybd_event($11,0,WM_KEYDOWN,0); // 按下Ctrl keybd_event($43,0,WM_KEYDOWN,0); // 按下C keybd_event($11,0,KEYEVENTF_KEYUP,0);//抬起ctrl keybd_event($43,0,KEYEVENTF_KEYUP,0);//抬起C end;if msg.LParamHi=$61 then // 如果按下小键盘 1 键 begin keybd_event($11,0,WM_KEYDOWN,0); keybd_event($56,0,WM_KEYDOWN,0); keybd_event($11,0,KEYEVENTF_KEYUP,0); keybd_event($56,0,KEYEVENTF_KEYUP,0); end;end;procedure TForm1.FormCreate(Sender: TObject);beginid1:=GlobalAddAtom('myhotkey1');//id1一定不能等于id2id2:=GlobalAddAtom('myhotkey2');RegisterHotKey(handle,id1,0,$60); //注册快捷键 60 键位码代表 小键盘 0 键RegisterHotKey(handle,id2,0,$61); // 小键盘 1 键end;procedure TForm1.FormDestroy(Sender: TObject);begin//释放热键UnRegisterHotKey(handle,id1);UnRegisterHotKey(handle,id2);end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);beginedit1.Text:=IntToHex(key,3);//获取键位码end;end. 很想知道这个是不是listbox,或者是其他控件? 用hook检测控件的内容是否发生改变,该怎么做? 如何将MDIChild作为MDIForm的背景? 字段添加? ★..请问在A程序中如何关闭B程序★ write 写文件问题 紧急求助110!help※help!! CreateProcess 如何隐藏运行窗口? delphi编程解方程 哪里有Delphi6的相关资料下载,最好是中文的? 求解INNO SETUP 5.3.3的制作步骤。 请教下ShellExecute组件
直接Ctrl+C Ctrl+V 不好使吗?
Keybd_event 可以模拟键盘,不妨试试可能
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
end;var
Form1: TForm1;
id1,id2:Integer;
implementation{$R *.dfm}
procedure TForm1.hotykey(var msg: TMessage);
begin
if msg.LParamHi=$060 then //如果按下小键盘 0 键
begin
keybd_event($11,0,WM_KEYDOWN,0); // 按下Ctrl
keybd_event($43,0,WM_KEYDOWN,0); // 按下C
keybd_event($11,0,KEYEVENTF_KEYUP,0);//抬起ctrl
keybd_event($43,0,KEYEVENTF_KEYUP,0);//抬起C
end;
if msg.LParamHi=$61 then // 如果按下小键盘 1 键
begin
keybd_event($11,0,WM_KEYDOWN,0);
keybd_event($56,0,WM_KEYDOWN,0);
keybd_event($11,0,KEYEVENTF_KEYUP,0);
keybd_event($56,0,KEYEVENTF_KEYUP,0);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
id1:=GlobalAddAtom('myhotkey1');//id1一定不能等于id2
id2:=GlobalAddAtom('myhotkey2');
RegisterHotKey(handle,id1,0,$60); //注册快捷键 60 键位码代表 小键盘 0 键
RegisterHotKey(handle,id2,0,$61); // 小键盘 1 键
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
//释放热键
UnRegisterHotKey(handle,id1);
UnRegisterHotKey(handle,id2);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
edit1.Text:=IntToHex(key,3);//获取键位码
end;
end.