【C++】注册热键-RegisterHotKey

【VC++】注册热键—RegisterHotKey
需要同时按住 Ctrl + 方向键,则使用 《注册热键》的方法。


1、定义热键,不要重复,防止热键冲突 


        #define myhotkey1 1018
        #define myhotkey2 1019


2、注册热键


RegisterHotKey(m_hWnd,myhotkey1,MOD_CONTROL, VK_F1);
RegisterHotKey(m_hWnd,myhotkey2,MOD_CONTROL, VK_F2); 


3、手动添加


LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam);


//手动添加虚函数DefWindowProc
LRESULT CRegisterHotKeyDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message==WM_HOTKEY)
{
if(wParam==myhotkey1)
{
//::MessageBoxA(0,"OK11","OK111",1);
//这里添加热键Ctrl+F1消息的处理
UpdateData(TRUE);
m_1++;
UpdateData(FALSE);
}
if(wParam==myhotkey2)
{
//::MessageBoxA(0,"OK222","O2222K",1);
                        //这里添加热键Ctrl+F2消息的处理}
UpdateData(TRUE);
m_2++;
UpdateData(FALSE);
}
}
return CDialog::DefWindowProc(message,wParam,lParam);



4、热键的注销


 在程序退出之前要记着注销这些注册热键,注销热键的函数如下:
BOOL UnregisterHotKey( HWND hWnd, // handle to window int id // hot key identifier );
 则注销上面注册的热键Ctrl+Shift+A的代码为:
UnregisterHotKey(m_hWnd,myhotkey1);//卸载热键
UnregisterHotKey(m_hWnd,myhotkey2);//卸载热键






附录:
键盘常用ASCII码
ESC键 VK_ESCAPE (27)
回车键: VK_RETURN (13)
TAB键: VK_TAB (9)
Caps Lock键: VK_CAPITAL (20)
Shift键: VK_SHIFT (16)
Ctrl键: VK_CONTROL (17)
Alt键: VK_MENU (18)
空格键: VK_SPACE (32)
退格键: VK_BACK (8)
左徽标键: VK_LWIN (91)
右徽标键: VK_LWIN (92)
鼠标右键快捷键:VK_APPS (93) 
Insert键: VK_INSERT (45)
Home键: VK_HOME (36)
Page Up: VK_PRIOR (33)
PageDown: VK_NEXT (34)
End键: VK_END (35)
Delete键: VK_DELETE (46)
方向键(←): VK_LEFT (37)
方向键(↑): VK_UP (38)
方向键(→): VK_RIGHT (39)
方向键(↓): VK_DOWN (40)
F1键: VK_F1 (112)
F2键: VK_F2 (113)
F3键: VK_F3 (114)
F4键: VK_F4 (115)
F5键: VK_F5 (116)
F6键: VK_F6 (117)
F7键: VK_F7 (118)
F8键: VK_F8 (119)
F9键: VK_F9 (120)
F10键: VK_F10 (121)
F11键: VK_F11 (122)
F12键: VK_F12 (123)
Num Lock键: VK_NUMLOCK (144)
小键盘0: VK_NUMPAD0 (48)
小键盘1: VK_NUMPAD0 (49)
小键盘2: VK_NUMPAD0 (50)
小键盘3: VK_NUMPAD0 (51)
小键盘4: VK_NUMPAD0 (52)
小键盘5: VK_NUMPAD0 (53)
小键盘6: VK_NUMPAD0 (54)
小键盘7: VK_NUMPAD0 (55)
小键盘8: VK_NUMPAD0 (56)
小键盘9: VK_NUMPAD0 (57)
小键盘.: VK_DECIMAL (46)
小键盘*: VK_MULTIPLY (42)
小键盘+: VK_MULTIPLY (43)
小键盘-: VK_SUBTRACT (45)
小键盘/: VK_DIVIDE (47)
Pause Break键: VK_PAUSE (19)
  Scroll Lock键: VK_SCROLL (145) 
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 C 的 DLL 中添加热键开关,您需要使用 Windows API 中的 RegisterHotKey() 和 UnregisterHotKey() 函数。以下是一个简单的示例: ```c #include <windows.h> // 为热键定义一个 ID #define HOTKEY_ID 1 // 热键开关状态 BOOL isHotkeyRegistered = FALSE; // 用于处理热键消息的回调函数 LRESULT CALLBACK HotkeyCallback(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { if (wParam == HOTKEY_ID) { // 热键被触发,执行相应的操作 if (isHotkeyRegistered) { UnregisterHotKey(NULL, HOTKEY_ID); isHotkeyRegistered = FALSE; } else { RegisterHotKey(NULL, HOTKEY_ID, MOD_CONTROL | MOD_SHIFT, 'K'); isHotkeyRegistered = TRUE; } } } return CallNextHookEx(NULL, nCode, wParam, lParam); } // 导出的 DLL 函数 BOOL WINAPI SetHotkey() { HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, HotkeyCallback, NULL, 0); if (hook != NULL) { // 注册热键 if (RegisterHotKey(NULL, HOTKEY_ID, MOD_CONTROL | MOD_SHIFT, 'K')) { isHotkeyRegistered = TRUE; return TRUE; } // 注册失败,清除钩子 UnhookWindowsHookEx(hook); } return FALSE; } ``` 在这个示例中,我们使用了 SetWindowsHookEx() 函数来安装一个全局的键盘钩子,并在回调函数中处理热键消息。当热键被触发时,我们使用 RegisterHotKey() 和 UnregisterHotKey() 函数来注册或注销热键。 要使用这个 DLL,您需要将代码编译成 DLL,并将其导出为一个函数(例如 SetHotkey())。然后,您可以在其他应用程序中使用 LoadLibrary() 和 GetProcAddress() 函数来加载并调用 SetHotkey() 函数,以启用或禁用热键

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值