VC添加全局热键
来源:互联网 发布:java文件流乱码 编辑:程序博客网 时间:2024/05/19 01:59
最近要给升级程序做个面板输入正确的验证码就绕开验证程序,直接进行升级。现在要通过热键来呼出这个面板。
常用的做法有两种。一种在消息循环中添加WM_HOTKEY的响应。一种是通过消息映射在ON_MESSAGE(WM_HOTKEY,我的处理函数)中做处理。
不管是哪种,首先要定义一个系统范围的热键。方法原型是:
BOOL WINAPI RegisterHotKey( __in_opt HWND hWnd, //响应消息的窗体句柄,若为NULL 则 消息映射方式的方法不会响应。 __in int id, //消息唯一标识 若有冲突,会导致注册失败 __in UINT fsModifiers, //与vk一同按下的辅助键,例如CTRL 、 ALT, 对应的程序标识就是MOD_CONTROL、MOD_ALT。 __in UINT vk );
其次若通过消息循环来处理热键响应 只要在窗体里实现 afx_msg BOOL PreTranslateMessage(MSG* pmsg) 就好了。
若要通过消息映射来响应。要在
BEGIN_MESSAGE_MAP(CMFCRegisterHotKeyDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_MESSAGE(WM_HOTKEY,OnHotKey) // 需要添加这个消息映射END_MESSAGE_MAP()
这个代码需要注意的点 就是
在CPP文件中 定义 热键消息的标识
#define IDH_HOTKEY 4000 //注意不要和其他的冲突了
在窗体的OnInitDialog()方法中 添加
BOOL result = ::RegisterHotKey(GetSafeHwnd(),IDH_HOTKEY,MOD_CONTROL+MOD_SHIFT,'K'); ///若 GetSafeHwnd()换成NULL ,则OnHotKey方法不会响应。
ASSERT(result);
ASSERT(result);
在 消息循环中处理的 要添加
BOOL XXXXXXX::PreTranslateMessage(MSG* pmsg){ if(pmsg->message ==WM_HOTKEY) { if(pmsg->wParam ==IDH_HOTKEY) AfxMessageBox(_T("热键被按下")); } switch (pmsg->message) { case WM_HOTKEY: if(pmsg->wParam ==IDH_HOTKEY) AfxMessageBox(_T("热键被按下")); break; case WM_LBUTTONDOWN: AfxMessageBox(_T("左键被按下")); break; case WM_RBUTTONDOWN: AfxMessageBox(_T("右键被按下")); break; default: break; } return CDialog ::PreTranslateMessage(pmsg);}
在 OnHotKey中处理的 添加
LONG CMFCRegisterHotKeyDlg:: OnHotKey(WPARAM wparam,LPARAM lparam){ UINT fuModifiers = (UINT) LOWORD(lparam); // key-modifier flags UINT uVirtKey = (UINT) HIWORD(lparam); // virtual-key code if(wparam ==IDH_HOTKEY) if(uVirtKey==VK_F8&&fuModifiers==MOD_CONTROL+MOD_SHIFT) AfxMessageBox(_T("热键被按下")); else if(wparam == IDH_HOTKEY1) { AfxMessageBox(_T("F8被按下")); } return 0;}
0 0
- VC添加全局热键
- VC添加全局热键的方法
- 添加全局热键
- VC全局热键的实现
- VC 中设置全局热键
- VC如何注册、屏蔽全局键盘热键
- VC如何注册、屏蔽全局键盘热键
- 全局热键
- 全局热键
- 全局热键
- VC/MFC中添加热键和快捷键
- VC++热键
- VB 全局热键
- C#注册全局热键
- [测试]注册全局热键
- Delphi全局热键
- C#注册全局热键
- 全局热键管理工具
- Windows下 maven3.0.4的安装步骤+maven配置本地仓库
- 硕士毕业设计积累
- 几种排序以及其时间复杂度 总结
- php合并数组函数array_merge与运算符“+”区别
- linux下make相关
- VC添加全局热键
- linux服务器开发浅谈
- Bootstrap 模态框的使用
- Same Tree
- PHP中获取当前页面的完整URL
- Ogre的setSkyPlane/setSkyDome/setSkyBox
- ios只更改应用的名字,不修改工程名和target name
- 配置catalog,创建创建虚拟专用目录
- oracle导入数据库dmp文件命令