请问怎么注册多个系统热键呢?

解决方案 »

  1.   

    unit Unit2;interfaceuses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;type
    TForm2 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
    private
        { Private declarations }
    public
         procedure MyHotkey(var msg:Tmessage);message wm_hotkey ;
    end;var
    Form2: TForm2;
       vID : integer;
    implementation{$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    UnregisterHotKey(Handle,vID);
    GlobalDeleteAtom(vID);
    end;procedure TForm2.FormCreate(Sender: TObject);begin
    vID := GlobalAddAtom('Ctrl+Enter');
    RegisterHotKey(Handle,vID,MOD_CONTROL,VK_RETURN);
    end;procedure TForm2.MyHotkey(var msg: Tmessage);
    begin
    if msg.WParam = vID then ShowMessage('hehe') ;
    end;end. 参看我写的这段代码。
      

  2.   

    其他同上
    procedure TForm2.FormCreate(Sender: TObject);begin
    vID := GlobalAddAtom('Ctrl+Enter');
    RegisterHotKey(Handle,1,MOD_CONTROL,65);
    RegisterHotKey(Handle,2,MOD_CONTROL,66);
    RegisterHotKey(Handle,3,MOD_CONTROL,67);
    end;
    //在判断msg.XX  判断哪个
    procedure TForm2.MyHotkey(var msg: Tmessage);
    begin
    if msg.WParam = 1 then ShowMessage('hehe') **
    if msg.WParam = 2 then ShowMessage('hehe') end;
      

  3.   


    MOD_CONTROL补充下:Ctrl + 你所设的键
    如果不需要Ctrl可以把这里的MOD_CONTROL
    换成0