使用方法如下:

BOOL RegisterHotKey(
HWND hWnd,    //响应该热键的窗口句柄
Int id,           //该热键的唯一标识
UINT fsModifiers, //该热键的辅助按键
UINT vk        //该热键的键值
);

为了得到唯一标识,我们还将用到另一个API函数

ATOM GlobalAddAtom(

LPCTSTR lpString //自己设定的一个字符串

);

因为我们还要在程序退出的时候,消除这个热键, 所以需要声明一个全局变量:

HotKeyId: Integer;

第一步:

在窗口的create事件中,加入以下代码

HotKeyId := GlobalAddAtom(‘MyHotKey’) - $C000;
注: HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值
在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。

第二步:

在上面的代码下面加入:

RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8);

热键的辅助按键包括Mod_Ctrl 、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows
键,即其键面上有Windows标志的那个键,其值为Mod_win。

上面 的代码注册了一个热键:ALT+F8。当然如果你希望象TAKEIT那样,只用F8, 就这么写:

RegisterHotKey(Handle, hotkeyid, 0, VK_F8);

注:handle是一个特殊的变量,它表示当前窗口的句柄。

这个函数你应该能句举一反三了吧。

原理:

一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应
用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消
息的格式为:

idHotKey = (int) wParam; // 该参数在设置系统级的热键有用,一般不予使用
fuModifiers = (UINT) LOWORD(lParam);  //热键的辅助按键
uVirtKey = (UINT) HIWORD(lParam); //热键的键值

第三步:

注册了热键,就该写下响应代码了。

首先,在程序头部分的private段中加入声明 (作用是声明这个过程,和声明变量类似。
关于如何声明函数、过程,请请参考各自的帮助文件或其它资料):

procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;

然后在程序中加入如下代码:

procedure Tfmain.HotKeyDown(var Msg: Tmessage);

begin

if (Msg.LparamLo = MOD_ALT) AND Msg.LParamHi = VK_F8 then // 假设热键为ALT+F8

begin

end;

最后一步:

在窗口的close事件中加入

UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源

注册热键 RegisterHotKey相关推荐

  1. 【C++】注册热键-RegisterHotKey

    [VC++]注册热键-RegisterHotKey 需要同时按住 Ctrl + 方向键,则使用 <注册热键>的方法. 1.定义热键,不要重复,防止热键冲突 #define myhotkey ...

  2. 注册热键——RegisterHotKey

    函数功能:该函数定义一个系统范围的热键. 函数原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk): 参数: hWnd:接收 ...

  3. 远程注入dll中注册热键

    函数原型如下 BOOL RegisterHotKey( HWND hWnd, // handle to window int id, // hot key identifier UINT fsModi ...

  4. VB两种方法注册热键

    热键是什么东西想必大家都明白,它的应用可以大大加快我们操作的速度.有时候看一个人使用热键的频率就可以看出他对这个软件的熟悉程度.在自己的程序中使用热键同样会使操作更简便.现在我们就来谈谈vb中的两种热 ...

  5. Qt注册热键打开窗口

    小程序代码:https://github.com/markmark999/Hellow-World/tree/master/wintest 看了网上很多关于注册热键的帖子,自己动手写了一个. 一共三步 ...

  6. 易语言- 定义一个系统范围的热键 RegisterHotKey UnregisterHotKey

    .版本 2 .DLL命令 UnregisterHotKey, 整数型, , "UnregisterHotKey"     .参数 hWnd, 整数型     .参数 HotKeyI ...

  7. python注册热键_RegisterHotKey注册快捷键

    因为我们还要在程序退出的时候,消除这个热键,   所以需要声明一个全局变量: HotKeyId:   Integer; 第一步: 在窗口的create事件中,加入以下代码 HotKeyId   := ...

  8. MFC热键设置的方法

    在写MFC程序时,如果想自定义热键比如ALT+S可以采用下面的方法: 定义热键的消息响应函数:OnHotKey 定义系统全局热键: 1.首先在.h文件中添加消息响应函数声明 afx_msg LRESU ...

  9. MFC 热键设置 OnHotKey方法和Accelerator方法的设置

    写MFC程序时,如果想自定义热键比如ALT+S可以采用下面两种方法: 方法一:定义热键的消息响应函数:OnHotKey 定义系统全局热键: 1.首先在.h文件中添加消息响应函数声明 afx_msg L ...

最新文章

  1. 简单好用的PHP无限分类
  2. JZOJ 5794. 2018.08.10【2018提高组】模拟A组省选 旅行
  3. Intel硬件加速 VS CUDA完胜 视频转码感受
  4. [完结]以C++与Java为例,详解数据结构的动态增长策略
  5. html缩进快捷键_Windows IDEA 快捷键终极大全,果断收藏!
  6. python threading.Condition
  7. Pocket通证POKT锁仓总价值超2.1947亿美元
  8. Ros无法自动补全命令的解决
  9. Nginx教程(三) Nginx日志管理 (转)
  10. BeyondCompare 源代码比对解决方案
  11. nodejs Log4js v2.x配置使用
  12. Excel 如何用万元单位表示,并且保留两位小数点,亲测真实有效!自定义格式即可解决!如:100.25万---但是此方法会导致最后一位永远都是0
  13. MAC OS读取NTFS格式硬盘
  14. WPS文档目录更新产生的问题记录
  15. c#通过126邮箱自动发送 微信端实现QQ邮箱邮件提醒
  16. html页面在线预览PDF文件
  17. linux crond定时任务,Linux之定时任务Crond使用
  18. 百度地图3d效果和卫星图效果
  19. 北京大学可视化发展前沿暑期学校第四讲
  20. 笨方法学python3怎么样_笨办法学Python3

热门文章

  1. 科研统计图形大合集!这么多种图形,如何正确的使用他们?
  2. WPF(5)WPF之DataGrid控件
  3. R语言学习——一元与多元正态分布检验(也可以用于其他分布的检验)
  4. 2023 24套手机摄影教程
  5. com.netflix.zuul.exception.ZuulException: Filter threw Exception
  6. vs动态库制作及使用
  7. spring cloud实战(五)UAA
  8. win8打开天正CAD出现TGStart64 error!
  9. 一度智信:如何避免电商店铺被处罚
  10. 当当API接口:item_search - 按关键字搜索dangdang商品