delphi热键:delphi程序中定义热键的方法 --转


======================================================
注:本文源代码点此下载
======================================================

疯狂代码 http://www.crazycoder.cn/ :http:/www.crazycoder.cn/delphi/article11711.html

用到3个api

bool registerhotkey( hwnd hwnd, //响应该热键窗口句柄 int id, //该热键唯标识 uint fsmodiers, //该

热键辅助按键 uint vk //该热键键值 );

为了得到唯标识我们还将用到另个api

atom globaladdatom(

lpctstr lpstring //自己设定个串

);

我们还要在退出时候消除这个热键 所以需要声明个全局变量:

hotkeyid: integer;

第步:

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

hotkeyid := globaladdatom('myhotkey') - $c000; 注: hotkeyid合法取的范围是0x0000到0xbfff的间

globaladdatom得到值 在0xc000到0xffff的间所以减掉0xc000来满足要求

第 2步:

在上面代码下面加入:

registerhotkey(handle, hotkeyid, mod_alt, vk_f8);

热键辅助按键包括mod_ctrl ,mod_alt,mod_sht,对于windows兼容键盘还支持windows 键即其键面上有

windows标志那个键其值为mod_win

上面 代码注册了个热键:alt+f8当然如果你希望象takeit那样只用f8, 就这么写:

registerhotkey(handle, hotkeyid, 0, vk_f8);

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

这个你应该能句举反 3了吧

原理:

旦热键设置成功在应用过程中如果有相应键被按下windows系统都会给你应 用发送个消息wm_hotkey不管

你应用是否为当前活动其中wm_hotkey消 息格式为:

idhotkey = () wparam; // 该参数在设置系统级热键有用,般不予使用 fumodiers = (uint)

loword(lparam); //热键辅助按键 uvirtkey = (uint) hiword(lparam); //热键键值

第 3步:

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

首先在头部分private段中加入声明 (作用是声明这个过程和声明变量类似 有关如何声明,过程请请参考各自帮

助文件或其它资料):

procedure hotkeydown(var msg: tmessage); message wm_hotkey;

然后在中加入如下代码:

procedure tf.hotkeydown(var msg: tmessage); begin (msg.lparamlo = mod_alt) and

(msg.lparamhi = vk_f8 then) // 假设热键为alt+f8 begin showmessage('f8'); end; end;

最后步:

在窗口close事件中加入

unregisterhotkey(handle, hotkeyid); //注销hotkey, 释放资源

atomid = globaladdatom(ls_atomid) //得到id保证不和其他应用发生冲突 ll_rc =

registerhotkey(handle(this), atomid, mod_alt + mod_control, 65) //注册热键为ctrl+alt+a 65为

'a' 2009-2-12 3:33:32

疯狂代码 http://www.crazycoder.cn/


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值