搜索
bottom↓
回复: 7

鼠标钩子截获鼠标滚轮信息!VC++

[复制链接]

出0入0汤圆

发表于 2009-5-26 22:50:59 | 显示全部楼层 |阅读模式
这几天在写一个关于鼠标勾子的程序,只想拦截鼠标滚轮并判断滚轮是上滚还是下滚.查了一些资料,没有什么进展,望兄弟帮俺一把!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-5-26 22:58:41 | 显示全部楼层
所有涉及硬件控制的编程,用Windows都会很累、非常累

如果你的项目不是非得锁定在Windows下,不妨换Linux试试看,会让你有一种[换了一片天地]的感觉的……

出0入0汤圆

 楼主| 发表于 2009-5-26 23:12:06 | 显示全部楼层
呵呵,我WINDOWS也还用不好,用么子LINUX.
没办法,客户要用的东西,用LINUX真的说不过去.再来工程基本完成就差这点了!希望能帮上忙的兄弟协助一把!
回贴的兄弟,我都先谢了!!!

出0入0汤圆

发表于 2009-5-27 00:38:44 | 显示全部楼层
那就帮不上你了,Windows我实在没心情再捡起来用……

不过如果你的程序是通过内嵌的浏览器内核配合本地页面实现的(现在很多程序都这么做的),那倒也不难,直接用JS实现即可

出0入0汤圆

发表于 2009-5-27 02:48:55 | 显示全部楼层
kb_proc是键盘的消息出来,鼠标的你自己改一下吧。
点击此处下载 ourdev_448324.rar(文件大小:622K) (原文件名:钩子2.rar)

#define   _WIN32_WINNT         0x400   
  #define   STRICT   
  #define   WIN32_LEAN_AND_MEAN   
      
  #include   <stdio.h>   
  #include   <stdlib.h>   
  #include   <windows.h>   
      
  DWORD       g_main_tid     =   0;   
  HHOOK       g_kb_hook       =   0;   
      
  BOOL   CALLBACK   con_handler   (DWORD)   
         
  {   
      PostThreadMessage   (g_main_tid,   WM_QUIT,   0,   0);   
      return   TRUE;   
  };   
      
  LRESULT   CALLBACK   kb_proc   (int   code,   WPARAM   w,   LPARAM   l)        
  {   
      PKBDLLHOOKSTRUCT   p   =   (PKBDLLHOOKSTRUCT)l;   

      const   char   *info   =   NULL;   
      if   (w   ==   WM_KEYDOWN)   
              info   =   "key   dn";   
      else   if   (w   ==   WM_KEYUP)   
              info   =   "key   up";   
      else   if   (w   ==   WM_SYSKEYDOWN)   
              info   =   "sys   key   dn";   
      else   if   (w   ==   WM_SYSKEYUP)   
              info   =   "sys   key   up";   

      printf   ("%s   -   vkCode   [%04x],   scanCode   [%04x]\n",     
              info,   p->vkCode,   p->scanCode);   
      //     always   call   next   hook   

      return   CallNextHookEx   (g_kb_hook,   code,   w,   l);   
         
  };   
      
  int   main   (void)   
  {   
          g_main_tid   =   GetCurrentThreadId   ();   
          SetConsoleCtrlHandler   (&con_handler,   TRUE);   
          g_kb_hook   =   SetWindowsHookEx   (   
//                          WH_KEYBOARD_LL,     
                          WH_MOUSE_LL,     
                          &kb_proc,     
                          GetModuleHandle   (NULL),   // 不能为NULL,否则失败   
                          0);   

          if   (g_kb_hook   ==   NULL)   
          {   
                          fprintf   (stderr,     
                                          "SetWindowsHookEx   failed   with   error   %d\n",   
                                          ::GetLastError   ());   
                          return   0;   
          };   

          //     消息循环是必须的,想知道原因可以查msdn   

          MSG   msg;   
          while   (GetMessage   (&msg,   NULL,   0,   0))   
          {   
                          TranslateMessage   (&msg);   
                          DispatchMessage   (&msg);   
          };   
          UnhookWindowsHookEx   (g_kb_hook);   
          return   0;   
};

出0入0汤圆

发表于 2009-5-27 02:57:21 | 显示全部楼层

(原文件名:1.JPG)

出0入0汤圆

发表于 2009-5-27 11:21:32 | 显示全部楼层
extern _declspec(dllexport) LRESULT CALLBACK WINAPI LowLevelMouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if (nCode == 0)
    {
        PMSLLHOOKSTRUCT l = (PMSLLHOOKSTRUCT)lParam;
                  if (wParam==WM_MOUSEWHEEL)
                  {
                        printf("zDelta=%d\n",l->mouseData);                        
                  }
    }
    return CallNextHookEx(g_kb_hook, nCode, wParam, lParam);
}

g_kb_hook=SetWindowsHookEx(WH_MOUSE_LL,LowLevelMouseProc, GetModuleHandle(NULL),0);

出0入0汤圆

 楼主| 发表于 2009-5-27 14:59:13 | 显示全部楼层
谢谢,非常感谢 xcm_gz
我先研究研究哈!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 16:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表