设为首页 加入收藏

TOP

11.3.3 键盘钩子DLL的调用
2013-10-07 14:34:55 来源: 作者: 【 】 浏览:64
Tags:11.3.3 键盘 钩子 DLL 调用

11.3.3  键盘钩子DLL的调用

刚刚讲解了键盘钩子DLL的实现,本节将通过一个简单的对话框工程实例,讲解这个DLL的调用方法。

(1)创建一个基于对话框的工程CatchKeyBoardTest。为对话框添加两个按钮:一个命名为捕获,另外一个命名为释放。

(2)隐式调用DLL,首先需要载入DLL的头文件,并载入DLL对应的lib文件。

  1. #include "catchkey.h"  
  2. #pragma comment("CatchKeyBoard.lib",lib)  

说明:当然也可以为了方便直接载入lib文件,在VC++(www.cppentry.com) 6.0集成开发环境的工程菜单中选择添加工程-files。然后选择lib文件即可。

(3)为两个按钮添加处理函数,一个开始键盘钩子,一个结束键盘钩子。

  1. 01  //开始捕获键盘钩子事件  
  2. 02  void CCatchKeyBoardTestDlg::OnCatch()   
  3. 03  {  
  4. 04      DWORD dwVK[] = {'P'};  
  5. 05      int nLength = sizeof(dwVK) / sizeof(DWORD);   
  6. 06      StartCatch(dwVK, nLength, this->m_hWnd);        //开始捕获键盘消息  
  7. 07  }  
  8. 08  //停止捕获键盘钩子事件  
  9. 09  void CCatchKeyBoardTestDlg::OnRelease()   
  10. 10  {  
  11. 11      StopCatch();                                    //停止捕获  
  12. 12  }  

(4)当开始键盘钩子后,键盘钩子DLL便开始监视所有进程的键盘事件,一旦有Ctrl与P的组合键时,便向这个窗体发送消息。因此需要在这个窗体中响应这个事件,定义事件(注意要和DLL中的值一致)如下:
  1. #define WM_MY_SHORTS (WM_USER + 105) 

然后实现这个事件的处理函数:
  1. 01  LRESULT CCatchKeyBoardTestDlg::CatchKey(WPARAM wParam, LPARAM lParam)  
  2. 02  {  
  3. 03      MessageBox("已经捕获Ctrl+P");               //提示捕获到消息的信息  
  4. 04      return 0;  
  5. 05  }  

当发出这个事件后,便弹出一个信息提示框。最后要将这个消息及消息处理事件进行映射:
  1. BEGIN_MESSAGE_MAP(CCatchKeyBoardTestDlg, CDialog)  
  2.     ON_MESSAGE(WM_MY_SHORTS,CatchKey)  
  3. END_MESSAGE_MAP()  

(5)当单击"捕获"按钮后,按下Ctrl与P组合键,窗体将弹出提示信息,如图11.14所示。当单击"释放"按钮后,将停止对Ctrl+P的捕获。
 
图11.14  捕获Ctrl+P

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇11.5 功能控制模块的设计与实现 下一篇11.2.1 DLL技术简介

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: