测试下客户端插件!
1、首先定义一个存储热键的变量。WORD m_wHotKey = 0x00;
2、在对话框中增加一个热键输入框IDC_HOTKEY(注:不是EditBox而是HotKey框哦),并增加一个设置按钮响应事件如下:
void CHotkeyDlg::OnSetup()
{
// 这里取出设置的热键值
m_wHotKey=(WORD)SendDlgItemMessage(IDC_HOTKEY,HKM_GETHOTKEY,0,0);
// 注册热键
RegHotkey();
}
3、在程序中加入一个注册热键的函数以便使用。如:
void CHotkeyDlg::RegHotkey()
{
// 如果没有设置的热键时,则使用默认的热键,这里为:ctrl + alt + e
if (0x00 == m_wHotKey)
m_wHotKey = MAKEWORD('E', HOTKEYF_ALT|HOTKEYF_CONTROL);
// 将热键值设置到热键输入框
::SendDlgItemMessage(m_hWnd,IDC_HOTKEY,HKM_SETHOTKEY,0xffff&m_wHotKey,0);
// 安全起见,注销先前的热键
UnregisterHotKey(m_hWnd,99999);
UINT Mod=0;
// 看看alt键是否已经被设置
if(HOTKEYF_ALT&HIBYTE(m_wHotKey))
Mod|=MOD_ALT;
if(HOTKEYF_CONTROL&HIBYTE(m_wHotKey))
Mod|=MOD_CONTROL;
if(HOTKEYF_SHIFT&HIBYTE(m_wHotKey))
Mod|=MOD_SHIFT;
// 这里进行热键注册,最后一个参数因为我们在存储热键值时使用了16位存储,故这里取出低位值
if ( !RegisterHotKey(m_hWnd,99999,Mod, LOBYTE(m_wHotKey)) )
{
AfxMessageBox("registre failed");
return;
}
// 将我们设置的热键存储起来。这里存储到windows目录下,当然你也可以指定存储到其它地方。
char sz[20];
sprintf(sz,"%d",m_wHotKey);
WritePrivateProfileString("setup","hotkey",sz,"hotkey.ini");
}
4、在初始化函数中加入:
// 取出我们设置的热键值,第三个参数为默认构造的热键值ctrl + alt + e
m_wHotKey=0xffff&GetPrivateProfileInt("setup","hotkey",MAKEWORD('E',HOTKEYF_ALT|HOTKEYF_CONTROL),"hotkey.ini");
// 注册热键
RegHotkey();
5、在窗体Destory函数中加入热键的注销函数:
UnregisterHotKey(m_hWnd,99999);
通过以上几个步骤,你的系统热键就可以成功使用了,试试看!