就是不管在哪个窗口,哪个程序中,只要选中一段文字或一幅图片,按一个快捷键就把它复制到剪贴板中?

解决方案 »

  1.   

    奇哉怪也!
    直接Ctrl+C Ctrl+V 不好使吗?
    Keybd_event 可以模拟键盘,不妨试试可能
      

  2.   

    直接Ctrl+C不好使啊,我想改进一下。能说详细点吗,把源码给我,最好带注释的,一个是用模拟键盘实现,一个用发送WM_COPY消息实现(本人初学很菜)
      

  3.   

    看你给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);
    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.