设为首页 加入收藏

TOP

11.5.6 捕获键盘钩子消息功能的实现
2013-10-07 14:34:22 来源: 作者: 【 】 浏览:59
Tags:11.5.6 捕获 键盘 钩子 消息 功能 实现

11.5.6  捕获键盘钩子消息功能的实现

键盘钩子的实现已经在11.2.2节中进行了详细的讲解,在此不再详述。这个键盘钩子会捕获键盘Ctrl与P的组合键,并且在捕获这个组合键后,会向注册它的窗体发送自定义消息WM_MY_SHORTS,该消息定义为:

  1. #define WM_MY_SHORTS (WM_USER + 105) 

因此要捕获这个消息,首先需要在功能控制窗体的初始化函数中注册这个键盘钩子。
  1. 01  BOOL CScreenShotsDlg::OnInitDialog()  
  2. 02  {  
  3. 03      DWORD dwVK[] = {'P'};  
  4. 04      int nLength = sizeof(dwVK) / sizeof(DWORD);  
  5. 05      StartCatch(dwVK, nLength, this->m_hWnd);        //开始捕获键盘消息  
  6. 06  }  

在11.2.2节中讲解的键盘钩子DLL中,StartCatch()函数开始钩子事件。当有键盘消息时,回调函数LowLevelKeyboardProc()将被调用。在这个回调函数中判断键盘事件,如果是Ctrl与P的组合键,它将向StartCatch()第3个参数指向的窗体发送WM_MY_SHORTS消息。因此为了截获这个消息,功能控制窗体需要定义一个函数OnCatchShots(),作为这个消息的响应函数。
  1. 01  LRESULT CScreenShotsDlg::OnCatchShots(WPARAM wParam, LPARAM lParam)  
  2. 02  {  
  3. 03      StopCatch();                        //停止键盘消息捕获事件  
  4. 04      OnStart();                          //开始截屏  
  5. 05      return 0;  
  6. 06  }  

【代码解析】

第3行注销键盘钩子,第4行调用截屏模块的跳转函数。如此便完成了截取键盘钩子消息的功能。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇11.5.5 关闭截屏工具功能的实现 下一篇11.6 截屏主功能模块的设计与实现

评论

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