看流星社区

 找回密码
 注册账号
查看: 1822|回复: 0

HOOK 低层键盘消息---WH_KEYBOARD_LL

[复制链接]

该用户从未签到

发表于 2017-6-2 11:01:02 | 显示全部楼层 |阅读模式
代码:屏蔽三个全局快捷键
代码的作用是屏蔽掉注释中的三个快捷键.

  1. LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
  2. {
  3.         // By returning a non-zero value from the hook procedure, the
  4.         // message does not get passed to the target window
  5.         KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *)lParam;
  6.         BOOL bControlKeyDown = 0;
  7.         HWND hWnd = GetForegroundWindow();
  8.         WCHAR szClassName[MAX_PATH] = {0};
  9.         ::GetClassName(hWnd, szClassName, MAX_PATH);
  10.                 switch (nCode)
  11.                 {
  12.                 case HC_ACTION:
  13.                         {
  14.                                 // Check to see if the CTRL key is pressed
  15.                                 bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);
  16.                                  //Disable CTRL+ESC
  17.                                 if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)
  18.                                         return 1;
  19.                                  //Disable ALT+TAB
  20.                                 if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
  21.                                         return 1;
  22.                                  //Disable ALT+ESC
  23.                                 if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN)
  24.                                         return 1;
  25.                                 break;
  26.                         }
  27.                 default:
  28.                         break;
  29.                 }
  30.                 //MessageBoxA(NULL, "aaa", NULL, MB_OK);
  31.                 return 1;
  32. }
  33. void ChookKeyboardllDlg::OnBnClickedOk()
  34. {
  35.         // TODO: 在此添加控件通知处理程序代码
  36.         Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, theApp.m_hInstance,0);
  37.         //CDialogEx::OnOK();
  38. }
  39. void ChookKeyboardllDlg::OnBnClickedCancel()
  40. {
  41.         // TODO: 在此添加控件通知处理程序代码
  42.         if(Hook)
  43.         {
  44.                 BOOL result = UnhookWindowsHookEx((HHOOK)Hook); // 卸载钩子
  45.                 if (result) Hook = NULL;
  46.         }
  47.         //CDialogEx::OnCancel();
  48. }
复制代码
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 22:04

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表