RegisterHotKey的具体使用方使用方法如下:

BOOL   RegisterHotKey( 
HWND   hWnd,         //响应该热键的窗口句柄 
Int   id,                       //该热键的唯一标识 
UINT   fsModifiers,   //该热键的辅助按键 
UINT   vk                 //该热键的键值 
);

为了得到唯一标识,我们还将用到另一个API函数   
ATOM   GlobalAddAtom( 
LPCTSTR   lpString   //自己设定的一个字符串 
);

例如:

注册热键

m_HKId = ::GlobalAddAtom(_T("MyHotKey")) - 0xC000;
BOOL bl = ::RegisterHotKey(GetHWND(), m_HKId, MOD_SHIFT, VK_F1);

因为我们还要在程序退出的时候,消除这个热键,   所以需要声明一个全局变量:   
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;

然后在程序中加入如下代码:

消息处理函数中判断消息是否为 WM_HOTKEY消息

case WM_HOTKEY:

{

//热键要处理的操纵
}

break;

最后一步:   
在窗口的close事件中加入

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

RegisterHotKey注册快捷键的更多相关文章

  1. 【转】C#注册快捷键

    转自:http://blog.csdn.net/xiahn1a/article/details/42561015 这里需要引用到“user32.dll”.对于Win32的API,调用起来还是需要dll ...

  2. RegisterHotKey注册热键,然后响应WM_HOTKEY消息

    MSDN中的一个示例代码,步骤就是RegisterHotKey注册热键,然后响应WM_HOTKEY消息 @1:这个是系统热键 #include "stdafx.h" int _cd ...

  3. listbox鼠标拖动数据和为button注册快捷键

    将listbox1中的数据用鼠标拖动至listbox2,即有左至右. 分别对应控件注册如下事件DragEnter,MouseDown,DragDrop 代码如下: //P128 DataGridVie ...

  4. 用RegisterHotKey注册系统热键

    函数功能:该函数定义一个系统范围的热键. 函数原型:BOOL RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk): 参数: hWnd:接 ...

  5. 【Delphi】注册快捷键

    ShortCutToText , TextToShortCut 需 uses Menus; type TForm1 = class(TForm) HotKey1: THotKey; Button1: ...

  6. nw 注册快捷键

    var option = { key : "Escape", }; var shortcut = new gui.Shortcut(option); gui.App.registe ...

  7. C#利用WIN32实现按键注册

    using System.Runtime.InteropServices; using System.Collections.Generic; using System; using System.W ...

  8. c# 注册全局热键

    //引入系统API [DllImport("user32.dll")] static extern bool RegisterHotKey(IntPtr hWnd, int id, ...

  9. WPF之全局快捷键

    目录 1.WPF快捷键实现方式 2.全局快捷键设置界面 3.Windows API调用 4.注册全局快捷键 5.快捷键触发 WPF快捷键实现方式 WPF快捷键实现主要有自定义快捷键命令和全局快捷键两种 ...

随机推荐

  1. 第一个Hibernate 程序

    使用MyEclipse建立Hibernate工程 index页面的Jsp源文件 <%@ page language="java" import="java.util ...

  2. Lo4j(二)级别和优化

    在log里面有日志级别: DEBUG Level: 指出细粒度信息事件对调试应用程序是非常有帮助的,就是输出debug的信息.INFO level: 表明消息在粗粒度级别上突出强调应用程序的运行过程, ...

  3. 【转】【Unity】DateTime各种时间字符串

    各种表示时间的方法 谢谢网络上的大神 此片为转载的文章 DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString ...

  4. Kettle安装与配置

    设置好了之后可以测试下 后来百度发现是缺少mysql的JDBC连接驱动 kettle在初次配置的时候容易出这个问题,这个是由于java程序在连接mysql数据库的时候缺少驱动 我的kettle版本是4 ...

  5. 树莓派Raspberry命令行配置无线网络连接

    前言: 树莓派有多种联网的方式,通过有线网或者通过无线网.通过有线网连接是比较简单的,在开启dhcp的路由器下,直接插上网线就可以联网,本文介绍树莓派无线联网的方式.再没联网的情况下,如果没有屏幕等外 ...

  6. lua 的io操作,非常详细

    Lua 标准库 - 输入输出处理(input and output facilities) I/O库提供两种不同的方式进行文件处理 1.io表调用方式:使用io表,io.open将返回指定文件的描述, ...

  7. 封装自己的yQuery

    function myAddEvent(obj, sEv, fn) { if (obj.attachEvent) { obj.attachEvent('on' + sEv, fn) } else { ...

  8. Jquery实现仿腾讯微薄的广播发表

    前言: 由于这几天在学习Jquery的一些知识,比以前的感觉就是Jquery太强大了,很多很简单的功能以前在JavaScript要写几十行的代码而在Jquery中只用几行代码就搞定了,所以我决定好好学 ...

  9. Spring in Action 4th 学习笔记

    约定: 一.@Xxx Class 表示被@Xxx注解的类.同理还有@Xxx注解的字段或方法. 例如:@Bean Method. 二.@Component Class 同时代指 @Controller. ...

  10. 第二百八十五节,MySQL数据库-MySQL函数

    MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函 ...