给应用程序添加热键

原创 2004年06月23日 02:06:00

对于一个后台程序,常常需要添加一个热键,此时,由于此时应用程序不在桌面,所以那些标准的MFC中定义的消息以及相关处理函数也不再有用。一般的做法是:

在init中做完必要的操作后,先注册一个系统热键,程序退出后释放掉。

系统热键的注册

  根据前面的介绍,不难写出为后台服务程序添加对系统热键响应的功能代码。首先通过函数GlobalFindAtom()查询本服务程序所对应的全局原子是否已存在于全局原子表中,如果发现,则说明系统中已经存在有此服务,程序退出。如果没有发现,则通过GlobalAddAtom()函数向全局原子表添加一个字串,并获取得到一个唯一标识此字串的原子。以上两函数原型分别为:

ATOM GlobalFindAtom(LPCTSTR lpString);
ATOM GlobalAddAtom(LPCTSTR lpString);

  其中,输入参数为一个描述原子的字符串,如果GlobalFindAtom()从全局原子表中找到了指定的字串,那么将返回此字串对应的原子,否则返回0。GlobalAddAtom()如果创建成功,将返回一个新创建的原子。
接下来,为了能在程序运行期间捕获到系统热键,需要通过RegisterHotKey()定义一个系统范围的热键。该函数原形如下:

BOOL RegisterHotKey(HWND hWnd, // 接收热键响应的窗口句柄
int id, // 热键的标识
UINT fsModifiers, // 控制键标志
UINT vk // 虚拟键值
);

  其中,热键标识id必须是一个范围在0xC000到0xFFFF之间的全局唯一的值,为了避免可能引起的热键冲突,通常把GlobalAddAtom()返回的原子作为参数传入,而且GlobalAddAtom()返回值的范围同id参数的允许范围是完全一致的。参数fsModifiers定义了同虚拟键值vk同时按下而产生出系统热键消息WM_HOTKEY的控制键组合,如MOD_ALT、MOD_CONTROL、MOD_SHIFT和MOD_WIN等。在本例中将要设定的系统热键为Alt+Ctrl+R,因此,参数fsModifiers和vk分别设置为MOD_ALT| MOD_CONTROL和VK_R。有关系统热键的注册实现方法可以整理如下:

// 获取当前窗口句柄
HWND handle = GetSafeHwnd();
// 寻找HotKey对应的原子是否存在于原子列表
if(GlobalFindAtom("Hotkey") == 0)
{
// 如果没有存在于原子列表,则创建一个原子
id = GlobalAddAtom("Hotkey");
//注册全局热键Ctrl + Alt + R
RegisterHotKey(handle, id, CONTROL + ALT, R);
}
else // 如果HotKey已经存在于原子列表,则终止程序运行
PostQuitMessage(0);

给VC程序加上热键(快捷键)

在利用Windows Media Player ActiveX控件写了一个简单的媒体播放器,想让自己写的这个播放器实现彻底隐藏的功能:程序主窗体的隐藏、在任务栏上的隐藏、在Alt+Tab键在程序间切换...
  • love3s
  • love3s
  • 2012年08月10日 15:27
  • 4718

C# 设置应用程序的快捷键

  • 2009年04月23日 14:11
  • 9KB
  • 下载

给应用程序添加热键

对于一个后台程序,常常需要添加一个热键,此时,由于此时应用程序不在桌面,所以那些标准的MFC中定义的消息以及相关处理函数也不再有用。一般的做法是: 在init中做完必要的操作后,先注册一个系统热键,程...
  • justaseeker
  • justaseeker
  • 2004年06月23日 02:06
  • 2097

如何为你的应用程序设置热键?

启动工程后,在你的工程中添加一个标准模块,然后将下面的代码粘贴到模块的声明段中。Option ExplicitDeclare Function SendMessage Lib "user32" _Al...
  • zcsor
  • zcsor
  • 2007年08月12日 21:53
  • 44907

Hotkey.cs:为应用程序添加热键

使用这个类,可以为你的C#程序添加热键,比如说,直接按一个组合键来最小化或最大化窗口的。 点击此处下载全部源程序 【下载说明】 1、单击上面这个地址,打开下载页面。 2、点普通下载--等待30...
  • pengqianhe
  • pengqianhe
  • 2012年09月26日 10:11
  • 1459

小程序-快捷键

格式调整   Ctrl+S:保存文件   Ctrl+[, Ctrl+]:代码行缩进   Ctrl+Shift+[, Ctrl+Shift+]:折叠打开代码块   Ctrl+C Ct...
  • nideshijian
  • nideshijian
  • 2017年02月08日 10:06
  • 1052

程序员必知的一些快捷键!

Shift+Alt+Enter: 切换全屏编辑     Ctrl+B,T / Ctrl+K,K: 切换书签开关   Ctrl+B,N / Ctrl+K,N: 移动到下一书签   Ct...
  • huang446276616
  • huang446276616
  • 2014年07月23日 11:02
  • 9418

如何在VC6中定义热键消息

    消息是windows操作系统和应用程序之间进行通信的载体,操作系统将包括用户在内的各种事件以消息的形式发送至目标,目标系统再根据消息具体的内容进行相应的处理。    在VC++6.0中,大多数...
  • wintys
  • wintys
  • 2009年02月23日 21:25
  • 1710

VC热键控件(Hot Key Controls)

简介: 热键控件Hot Key Controls,是一个控件,就像IP控件一样,方便输入IP地址,同理,热键控件是方便输入热键的 这要和VC的热键区分开,举个例子,你开发的软件需要支持快捷键操作,而且...
  • rankun1
  • rankun1
  • 2017年04月06日 14:45
  • 525

17设置整个程序的快捷键

  • 2011年04月02日 01:46
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给应用程序添加热键
举报原因:
原因补充:

(最多只允许输入30个字)