Delphi 全局热键注册+使用

RAD Studio 10.2.3 测试√


全局变量:

var
  mHotKey01, mHotKey02: Integer;

1、在程序创建的时候或者窗体显示的时候注册热键

begin
  // 原子【mHotKey01】
  mHotKey01 := GlobalAddAtom('xiaoyin_HotKey_CTRL_F1') - $C000;
  //注册热键【Ctrl + F1】
  RegisterHotKey(Handle, mHotKey01, MOD_CONTROL, VK_F1);
  // 原子【mHotKey02】
  mHotKey02 := GlobalAddAtom('xiaoyin_HotKey_SHIFT_CTRL_F1') - $C000;
  //注册热键【Ctrl + Shift + F1】
  RegisterHotKey(Handle, mHotKey02, MOD_CONTROL + MOD_SHIFT, VK_F1);
  // 如有更多需求,以此类推即可
end;

2、上面注册成功后,此时的热键已经生效,下面就是给相应的热键添加事件

注意:需要声明方法【不管是public还是private还是别的下面都行】
我下面是写在 private 下的

  private
    { Private declarations }
    procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
// 注册的热键系统收到触发的消息就会程序,然后执行这个方法
procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
  // 如果 热键值对上了
  if (Msg.LparamLo = MOD_CONTROL) and (Msg.LParamHi = VK_F1) then
  begin
    ShowMessage('Ctrl + F1 调用成功');
  end;

  if (Msg.LparamLo = MOD_CONTROL + MOD_SHIFT) and (Msg.LParamHi = VK_F1) then
  begin
    ShowMessage('Ctrl + Shift + F1 调用成功');
  end;
end;

3、用完之后一定记得需要删除热键,不管是在窗体关闭的情况下,还是在销毁的情况下使用都可以

begin
  // 释放热键【Ctrl + F1】
  UnRegisterHotKey(handle, mHotKey01);
  // 删除原子【mHotKey01】
  GlobalDeleteAtom(mHotKey01);
  // 释放热键【Ctrl + Shift + F1】
  UnRegisterHotKey(handle, mHotKey02);
  // 删除原子【mHotKey02】
  GlobalDeleteAtom(mHotKey02);
end;

一点点笔记,以便以后翻阅。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值