注册系统热键

来源:互联网 发布:网络保密整改报告 编辑:程序博客网 时间:2024/06/05 17:26

利用系统热键可以方便用户操作,快速调用另一个程序。比如可以按Ctrl+Alt+z可以调出QQ的聊天窗口。

方法比较简单,大致思路是用RegisterHotKey注册自定义热键和添加自定义消息,就可以实现增加系统热键。

第一步:

在类的头文件中添加

public:
ATOM m_atomId; //存储向操作系统添加的全局原子,是热键的标识符号
BOOL m_bRegister; //标识热键是否注册成功.TRUE:成功;FALSE:失败

在源代码文件中添加如下代码

//向操作系统添加一个全局原子Atom m_atomId,作为该热键的符号名称
m_atomId = GlobalAddAtom("myHotKey");
//设定ALT+Z为热键,应当尽量使用比较生疏的进行注册
//注册成功将m_bRegister变为TRUE,否则m_bRegister为FALSE
if(!RegisterHotKey(m_hWnd, m_atomId, MOD_ALT, 'Z'))
m_bRegister = FALSE;
else
m_bRegister = TRUE;

 

第二步:

添加自定消息响应函数

在头文件中添加

afx_msg void OnHotKey(WPARAM wParam,LPARAM lParam);
在源码文件中的BEGIN_MESSAGE_MAP之后END_MESSAGE_MAP之前添加如下的消息映射定义如下:
ON_MESSAGE(WM_HOTKEY,OnHotKey) 

手工添加热键消息处理函数OnHotKey,注意其第一参数代表被按下的热键的符号标志.在该函数中用户可以完成注册Alt + Z热键需要进行的工作,比如呼出winap等.本例以演示为目的,不做具体的工作,只是弹出一个消息对话框响应该热键.代码如下:
void CMyHotKeyView::OnHotKey(WPARAM wParam, LPARAM lParam)
{
//如果按下的热键是用户注册的Alt + Z,则弹出消息对话框进行响应
//否则,什么都不做,交由系统去处理该热键事件
if(m_atomId == wParam)MessageBox("系统热键 Alt+Z 被激活", "响应系统热键", MB_OK);
}