计算机二级C 技巧:C 鼠标全局钩子实现代码计算机二级考试

文章作者 100test 发表时间 2009:06:15 10:08:25
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  本程序分为两个部分:
  第一:dll部分。
  第二:程序部分。
  本程序是主要获得任意窗口的标题。
  第一部分代码如下:
  #include <.windows.h>.
  #pragma data_seg("mydata")
  HWND g_hPrevTarWnd = NULL.
  //上次鼠标所指的窗口句柄
  HWND g_hDisplayWnd = NULL.
  //显示目标窗口标题编辑框的句柄
  HHOOK g_hHook = NULL. //安装的鼠标勾子句柄
  #pragma data_seg()
  #pragma comment(linker,"/section:mydata,rws")
  //实现数据共享
  //钩子函数的实现:
  LRESULT CALLBACK MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
  {
  LPMOUSEHOOKSTRUCT pMouseHook =
  (MOUSEHOOKSTRUCT FAR *)lparam.
  if (nCode >.= 0)
  {
  HWND glhTargetWnd =
  ::WindowFromPoint(pMouseHook->.pt).
  if ((glhTargetWnd != g_hPrevTarWnd) &.&.
  (NULL != glhTargetWnd))
  {
  char szCaption[256].
  GetWindowText(glhTargetWnd,szCaption,100).
  //取目标窗口标题
  if(IsWindow(g_hDisplayWnd))
  {
  SendMessage(g_hDisplayWnd,WM_SETTEXT,0, (LPARAM)(LPCTSTR)szCaption).
  }
  g_hPrevTarWnd=glhTargetWnd.//保存目标窗口
  }
  }
  return CallNextHookEx(g_hHook,nCode,wparam,lparam).
  //继续传递消息
  }
  //启动钩子
  _declspec(dllexport) void StartHook(HWND hWnd)
  {
  g_hHook = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0).
  //全局钩子最后一个函数要为零
  g_hDisplayWnd = hWnd.
  }
  //卸载钩子
  _declspec(dllexport) void StopHook()
  {
  BOOL bResult.
  bResult = UnhookWindowsHookEx(g_hHook).
  if(bResult)
  {
  g_hPrevTarWnd = NULL.
  g_hDisplayWnd = NULL.
  g_hHook = NULL.
  }
  }
  第二部分主要代码:
  建立一个基于对话框的应用程序,然后在OnInitDialog函数里面添加启动钩子函数,具体代码:
  // TODO: Add extra initialization here
  CWnd* pWnd=GetDlgItem(IDC_HOOkEDIT).
  StartHook(pWnd->.GetSafeHwnd()).
  分别添加卸载钩子和取消的按钮命令,代码如下:
  void CHookTestDlg::OnStophook()
  {
  // TODO: Add your control notification handler code here
  StopHook().
  GetDlgItem(IDC_STOPHOOK)->.EnableWindow(FALSE).
  }
  void CHookTestDlg::OnCancel()
  {
  // TODO: Add extra cleanup here
  StopHook().
  CDialog::OnCancel().
  }

  2009年9月全国计算机等级考试时间及科目预告

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  全国计算机等级考试历年真题及答案

  2009年上半年全国计算机等级考试试题及答案



相关文章


C 默默编写并调用哪些函数计算机二级考试
errorLNK2005:……alreadydefinedin计算机二级考试
计算机二级C 技巧:C 鼠标全局钩子实现代码计算机二级考试
C语言声明的优先级规则计算机二级考试
脚本系统:c 内嵌python计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛