HOOK 底层键盘消息---WH_KEYBOARD_LL
2015-08-21 10:44
288 查看
代码:屏蔽三个全局快捷键
代码的作用是屏蔽掉注释中的三个快捷键.
代码的作用是屏蔽掉注释中的三个快捷键.
LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam) { // By returning a non-zero value from the hook procedure, the // message does not get passed to the target window KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *)lParam; BOOL bControlKeyDown = 0; HWND hWnd = GetForegroundWindow(); WCHAR szClassName[MAX_PATH] = {0}; ::GetClassName(hWnd, szClassName, MAX_PATH); switch (nCode) { case HC_ACTION: { // Check to see if the CTRL key is pressed bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1); //Disable CTRL+ESC if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown) return 1; //Disable ALT+TAB if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN) return 1; //Disable ALT+ESC if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN) return 1; break; } default: break; } //MessageBoxA(NULL, "aaa", NULL, MB_OK); return 1; } void ChookKeyboardllDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, theApp.m_hInstance,0); //CDialogEx::OnOK(); } void ChookKeyboardllDlg::OnBnClickedCancel() { // TODO: 在此添加控件通知处理程序代码 if(Hook) { BOOL result = UnhookWindowsHookEx((HHOOK)Hook); // 卸载钩子 if (result) Hook = NULL; } //CDialogEx::OnCancel(); }
相关文章推荐
- ipsplit
- 绘图 - 2
- [UVA 202]Repeating Decimals
- IOS开发之图片浏览
- Windows7上FTP服务器建立
- 计算字符在字符串中出现的次数
- iOS多线程编程:线程同步总结
- epel源报错
- 如何通过Word 2010发布文章到博客
- [Win32] SCManager 服务控制管理器API(2)
- Android 看过的 不错的文章 嘎嘎
- ubuntu14.04安装xen
- Android布局的优化方案汇总
- MyEclipse快捷键大全-按快捷键分类(转自cnblogs MyEclipse快捷键大全)
- HDU 2841 Visible Trees(数论)
- can't connect to mysql server on localhost <10061>
- openresty + lua-resty-weedfs + weedfs + graphicsmagick动态生成缩略图(类似淘宝方案)
- CentOS 6.5 MySQL5.6.26源码安装
- Android布局的优化方案汇总
- 【甘道夫】基于Mahout0.9+CDH5.2执行分布式ItemCF推荐算法