网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Delphi编程 >> 文章正文
  热键            【字体:
热键
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    
 
热键
Mail:yufan27209@qq.com
 
好久没有写过东西了。
正在装载数据……
唉,人生真难啊,这段时间不管是生活、工作还是爱情都不如意。
希望明天起床一切都好起来。大家祝福下怎样?
 
前几天搞了台破电脑来玩玩,想下班回来开发个“网络商店CRM”系统(不好意思,就这么一点东西还称得上系统,我汗个先,不用大家说)
环境如下:
Delphi
Access
Access我是一点都不会,用习惯了ms sql的查询分析器。呵呵也想来做个。功能不可能有那强大,主要来测试下sql是否出错。
在开发过程中,遇到个重之重的问题----热键。
软件没热键,就不能理现一个人对该软件的熟悉的程度----至少我是这样认为的。
 
热键,大家想到什么技术呢?
当然,勾子、消息。勾子我也不熟悉。下我就把我调用api做热键。
 
1.        BOOL RegisterHotKey( HWND hWnd, //响应该热键的窗口句柄 Int id, //该热键的唯一标识 UINT fsModifiers, //该热键的辅助按键 UINT vk //该热键的键值 ); 为了得到唯一标识,我们还将用到另一个API函数 ATOM GlobalAddAtom( LPCTSTR lpString //自己设定的一个字符串 );
2.        声明一个全局变量:HotKeyId: Integer;
3.        在窗口的create事件中,加入以下代码
HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F5);
注: HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值 在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。
热键的辅助按键包括Mod_Ctrl 、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows键,即其键面上有Windows标志的那个键,其值为Mod_win。
上面 的代码注册了一个热键:ALT+F5。当然如果你希望象ms sql查询分析器那样,只用F5, 就这么写:
RegisterHotKey(Handle, hotkeyid, 0, VK_F5);
注:handle是一个特殊的变量,它表示当前窗口的句柄。
原理:
一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应 用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消息的格式为:
idHotKey = (int) wParam; // 该参数在设置系统级的热键有用,一般不予使用
fuModifiers = (UINT) LOWORD(lParam); //热键的辅助按键
uVirtKey = (UINT) HIWORD(lParam); //热键的键值
4.        注册了热键,就该写下响应代码了。
首先,在程序头部分的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_F5 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'



本文来源:http://blog.csdn.net/yufan27209/archive/2007/08/08/1732961.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     在delphi中使用xml文档有…
     初探delphi 7 中的插件编…
     delphi 2006(dexter) & …
     获得windows的版本信息。
     “序列号输入助手”源代…
     rs232串口通讯模块
     ado方式下判断数据表是否…
  • 在PB中实现系统热键功能的新…

  • To CNET:全局热键的例子,不…

  • 教你如何成为一个Eclipse热键…

  • 在应用程序中使用热键的一段…

  • 设定系统热键关闭当前窗口

  • VC实现系统热键激活后台服务…

  • 实现热键激活后台进程

  • 利用热键控制鼠标移动的一个…

  • borland ide 常用热键简介 v…

  • 成为eclipse热键高手

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David