Delphi注册热键

type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private

  public
    //关键位置:建立一个子程序 处理wm_hotkey的消息
    procedure gethotkeymsg(var msg:TMessage);
    message wm_hotkey;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var j_i:LongBool;
begin
    j_i:=RegisterHotKey(Form1.handle,7999,0,113);//注册热键(f2)
    //参数3的0为注册单热键 为1则是组合键ALT+参数4,为2则是组合键Crtl+参数4
    if j_i <>True  then
    begin
      ShowMessage('F2热键已注册');
    end;
end;

procedure TForm1.gethotkeymsg(var msg:TMessage);
begin
       if msg.WParam=7999 then
       begin
         ShowMessage('热键F2起作用了');
       end;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
    UnregisterHotKey(Form1.Handle,7999);
end;

关键位置1.TForm类下公有接口里建立一个子程序 处理wm_hotkey消息

procedure gethotkeymsg(var msg:TMessage);
    message wm_hotkey;

这2句都要加

          2.调用RegisterHotKey注册热键 UnregisterHotKey撤消热键 因为已在窗口类里申明处理wm_hotkey消息,所以用在窗口类的申明的消息处理子程序处理消息

原文地址:https://www.cnblogs.com/qq32175822/p/3196662.html