Delphi 热键声明和使用


本文整理自网络,侵删。

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

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;
end

最后一步: 

在窗口的close事件中加入 

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

相关阅读 >>

Delphi android-api 开发常用函数

Delphi 如何让程序在按了 android 的 back 键后不关闭当前 from 或者不 app 退出

Delphi xe5 Delphi 解析 json

Delphi 如何从url提取文件名?

Delphi datasnap 的连接事件顺序图

Delphi windows 编程[1] - 窗体生成的过程一

Delphi 读取全网站链接

Delphi中ns和ms时间的获取方法

Delphi的对象注销方法destroy和free的区别

Delphi 创建圆形或椭圆形窗体

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...