delphi热键设定的方法
来源:互联网 发布:湖南大学北校区 知乎 编辑:程序博客网 时间:2024/05/13 03:52
======================================================
注:本文源代码点此下载
======================================================
问题是你要全局的.还是要系统级的,还是要局部的。
如果是全局和局部的,那么在主窗体上(或其他控件上)(form)的keypress等属性上监控就行了..
如果是系统级的,那么需要api了.
简单代码:
用到3个api函数
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
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'
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
- delphi热键设定的方法
- delphi热键设定的方法
- delphi热键设定的方法
- delphi热键(快捷键)设定
- delphi热键:delphi程序中定义热键的方法 --转
- delphi程序全局热键的自定义方法
- Delphi热键简易方法
- 关于TDateTimePicker的设定[delphi]
- 屏蔽系统热键的方法
- MFC热键设置的方法
- Delphi定义热键
- delphi 多热键注册
- Delphi全局热键
- Delphi 热键处理hotkey
- Delphi屏蔽指定热键
- Delphi全局热键注册
- delphi 如何设置热键
- DELPHI 2005中设定RS232(串口)控件(MSCOMM)的方法
- Html 常用标志总结
- AJAX学习笔记(一)
- 减小Delphi2010程序的尺寸(关闭RTTI反射机制)
- Ajax简单客户登陆验证
- 【转】华为Java笔试题
- delphi热键设定的方法
- [转载]Java中抽象类和接口的区别
- Ajax Toolkit --- UpdatePanelAnimationExtender应用及问题
- JQuery ajax调用asp.net的webMethod
- 伪ajax upload file
- 开始应用AJAX
- Html5 Canvas 扫雷 (IE9测试通过)
- behaviour.js让你的HTML代码变干净
- 让 JavaScript 拯救 HTML5 的离线存储