DELPHI技巧:delphi程序中定义热键的方法

文章作者 100test 发表时间 2011:03:22 18:44:03
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  用到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 。

  特别推荐:

  #0000ff>2009年9月全国计算机等级考试时间及科目预告

  #0000ff>2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  #0000ff>2009年全国计算机等级考试报名信息汇总

  #0000ff>2009年NCRE考试有新变化

  #0000ff>2009年全国计算机等级考试-大纲

  #0000ff>2009年上半年全国计算机二级考试试题及答案

  #0000ff>2009年上半年全国计算机等级考试试题答案汇总



相关文章


计算机二级:delphi播放mp3背景音乐代码
计算机二级DELPHI技巧:窗体中底图位置的设置
将.EXE文件放在Windows启动文件中的实现代码
计算机二级:向下拉列表添加字段的几种方法
DELPHI技巧:delphi程序中定义热键的方法
计算机二级DELPHI技巧:编写通用的程序更新模块
DELPHI技巧:delphi图片换肤处理优化修正代码
2011年计算机等级考试二级Delphi辅导讲义:Delphi客户服务器应用开发
2011年计算机等级考试二级Delphi辅导讲义:Delphi自定义部件开发
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛