测试下客户端插件! 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); 通过以上几个步骤,你的系统热键就可以成功使用了,试试看!