Windows中的消息截获HOOK钩子计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:58:59
来源 100Test.Com百考试题网


  由于本人能力有限,所以实现钩子的方法一定不是是最好的,但简单。
  本来一直打算做个APM计数器的,所谓APM计数器,就是一个全局的计算键盘鼠标平均时间下的操作量啦。如果玩过星际争霸或者魔兽争霸的一定知道APM的意义。
  为了实现全局的统计键盘和鼠标操作,我采用了HOOK的方法进行了实现,具体如下。
  首先建立一个DLL得工程,这个工程的主要目的就是进行钩子并且通过函数指针对主程序进行通知。
  其头文件如下:
  #ifdef _COMPILING_44E531B1_14D3_11d5_A025_006067718D04
  #define LIBSPEC __declspec(dllexport)
  #else
  #define LIBSPEC __declspec(dllimport)
  #endif
  LIBSPEC BOOL setMouseHook().
  LIBSPEC BOOL setKeyBoardHook().
  LIBSPEC BOOL setMsgHook().
  LIBSPEC BOOL clearAllHook().
  typedef int (*FucOnMouse)(int mousex,int mousey) .
  LIBSPEC void setHookFuncMouse(FucOnMouse ptFuc).
  typedef int (*FucOnKeyBoard)(long code, long scancode,long flags).
  LIBSPEC void setHookFuncKeyBoard(FucOnKeyBoard ptFuc).
  typedef int (*FucOnMsg)(WPARAM wParam, LPARAM lParam).
  LIBSPEC void setHookFuncMsg(FucOnMsg ptFuc).
  #undef LIBSPEC
  而后是源文件:
  HINSTANCE hInst.
  HHOOK hookkeyboard = NULL.
  static LRESULT WINAPI KeyBoardProc(int nCode,WPARAM wparam,LPARAM lparam) .
  BOOL APIENTRY DllMain( HINSTANCE hInstance,
  DWORD Reason,
  LPVOID Reserved
  )
  {
  switch(Reason)
  { /* reason */
  case DLL_PROCESS_ATTACH:
  hInst = hInstance.
  return TRUE.
  case DLL_PROCESS_DETACH:
  return clearAllHook().
  } /* reason */
  return TRUE.
  }
  //主程序如果要对键盘消息进行截获就调用这个函数
  __declspec(dllexport) BOOL setKeyBoardHook()
  {
  if (hookkeyboard!=NULL)
  {
  return TRUE.
  }
  hookkeyboard = SetWindowsHookEx(WH_KEYBOARD_LL,KeyBoardProc,hInst,0).
  if(hookkeyboard!=NULL)
  { /* success */
  return TRUE.
  }
  return FALSE. // failed to set hook
  }
  //然后在主程序中设置一个函数指针来处理键盘消息。
  static FucOnMouse g_ptfucmouse = NULL.
  __declspec(dllexport) void setHookFuncMouse(FucOnMouse ptFuc)
  {
  g_ptfucmouse = ptFuc.
  }
  //这部分就是HOOK的时候传入的处理函数啦

相关文章


计算机二级C 辅导:从父进程到子进程的复制计算机等级考试
计算机二级C 辅导:所需要的文件及其更改计算机等级考试
计算机二级C 辅导:n进制数转为m进制计算机等级考试
Hook技术使用SetHook替换IAT表计算机等级考试
Windows中的消息截获HOOK钩子计算机等级考试
2009年9月全国计算机二级C 上机试题计算机等级考试
2009年下半年全国计算机二级C 笔试答案计算机等级考试
2009年9月全国计算机二级C 笔试试题计算机等级考试
2009年下半年全国计算机二级C 上机答案计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛