工控编程吧

标题: 上位机MFC如何实现钩子 [打印本页]

作者: qq263946146    时间: 2019-8-16 11:18
标题: 上位机MFC如何实现钩子
可以3步走,使用钩子函数。
1.SetWindowsHookEx,挂上钩子,传递函数HookProc可监视事件。
2.UnhookWindowsHookEx 卸载钩子。
3.在HookProc内监视事件。
对应三步为

  1. void CDemoDlg::OnTest1()
  2. {
  3.         //安装键盘钩子
  4.         m_Hook = ::SetWindowsHookEx(WH_KEYBOARD_LL, HookProc,
  5.                 AfxGetApp()->m_hInstance, 0);

  6.         AfxMessageBox(_T("钩子安装成功。"));
  7. }

  8. void CDemoDlg::OnTest2()
  9. {
  10.         //卸载钩子
  11.         UnhookWindowsHookEx(m_Hook);

  12.         AfxMessageBox(_T("钩子卸载成功。"));
  13. }

  14. LRESULT WINAPI HookProc(int nCode, WPARAM wParam, LPARAM lParam)
  15. {
  16.         LPKBDLLHOOKSTRUCT pKB = (LPKBDLLHOOKSTRUCT)lParam;

  17.         //屏蔽Alt+F4消息
  18.         if (nCode == HC_ACTION)
  19.         {
  20.                 if ((pKB->vkCode == VK_F4) && (pKB->flags & 0x20))
  21.                 {
  22.                         AfxMessageBox(_T("已拦截屏蔽Alt+F4消息"));
  23.                         return 1;
  24.                 }
  25.         }

  26.         //传递
  27.         ::CallNextHookEx(0, nCode, wParam, lParam);

  28.         return 0;
  29. }
复制代码







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4