绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
4月192017

AU3鼠标HOOK

作者:AOPO   发布:2017-4-19 15:16 Wednesday   分类:源码示例   阅读:7016次   评论:0条  

#include <WindowsConstants.au3>

;typedef struct tagMSLLHOOKSTRUCT {
;  POINT     pt;
;  DWORD     mouseData;
;  DWORD     flags;
;  DWORD     time;
;  ULONG_PTR dwExtraInfo;
;}MSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT, *LPMSLLHOOKSTRUCT;

;typedef struct tagPOINT {
;  LONG x;
;  LONG y;
;} POINT, *PPOINT;
Global Const $tagMSLLHOOKSTRUCT = "long x;long y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo"

Global $hCallback = DllCallbackRegister("LowLevelMouseProc", "long", "int;wparam;lparam")
Global $hModule = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hCallback), $hModule)

OnAutoItExitRegister("OnAutoItExit")

While 1
    Sleep(10)
WEnd

;===========================================================
;nCode
;小于0返回CallNextHookEx

;wParam
;消息: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_MOUSEHWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP

;lParam
;MSLLHOOKSTRUCT结构指针

;Return
;如果钩子过程没有处理消息,返回CallNextHookEx
;如果钩子过程处理的消息,返回一个非零值来防止系统传递消息给其余的钩链或目标窗口
;===========================================================
Func LowLevelMouseProc($nCode, $wParam, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)

    Local $tMSLLHOOKS = DllStructCreate($tagMSLLHOOKSTRUCT, $lParam)
    Local $iX = DllStructGetData($tMSLLHOOKS, "x")
    Local $iY = DllStructGetData($tMSLLHOOKS, "y")
    Local $iData = DllStructGetData($tMSLLHOOKS, "mouseData")
    Local $iH = _WinAPI_HiWord($iData)
    Local $iL = _WinAPI_LoWord($iData)

    Switch $wParam
        Case $WM_MOUSEMOVE
            ToolTip("鼠标移动: (" & $iX & "," & $iY & ")")
        Case $WM_LBUTTONDOWN
            ToolTip("鼠标左键按下: (" & $iX & "," & $iY & ")")
        Case $WM_LBUTTONUP
            ToolTip("鼠标左键抬起: (" & $iX & "," & $iY & ")")
        Case $WM_RBUTTONDOWN
            ToolTip("鼠标右键按下: (" & $iX & "," & $iY & ")")
        Case $WM_RBUTTONUP
            ToolTip("鼠标右键抬起: (" & $iX & "," & $iY & ")")
            Return 1;屏蔽鼠标右键弹起,内部处理消息
        Case $WM_MBUTTONDOWN
            ToolTip("鼠标滚轮按下: (" & $iX & "," & $iY & ")")
        Case $WM_MBUTTONUP 
            ToolTip("鼠标滚轮抬起: (" & $iX & "," & $iY & ")")
        Case $WM_MOUSEWHEEL
            If $iH > 0 Then
                ToolTip("鼠标滚轮上滚: (" & $iX & "," & $iY & ")")
            Else
                ToolTip("鼠标滚轮下滚: (" & $iX & "," & $iY & ")")
            EndIf
        Case Else
            ConsoleWrite($wParam & @CRLF)
            ToolTip("其他消息: (" & $wParam & ")")
    EndSwitch
    Return _WinAPI_CallNextHookEx(0, $nCode, $wParam, $lParam)
EndFunc ;==>_MouseProc

Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hCallback)
EndFunc   ;==>OnAutoItExit```
<br />




本文固定链接: http://www.jianyiit.com/post-260.html

blogger
该日志由 AOPO 于2017-4-19 15:16 Wednesday发表在 源码示例 分类下。
版权所有:《绿色风's Blog》 → 《AU3鼠标HOOK》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::AU3键盘HOOK
下一篇:AU3强制本机内嵌IE版本为本机最高版本IE

热门文章

相关文章

  • 窗体边缘阴影-示例
  • [汇编注入]纯AU3实现的汇编注入引擎(完全脱离DLL等外部插件)
  • 黑客帝国特效
  • au3 gdi旋转的文本-转自德语论坛
  • AU3键盘HOOK
取消回复

发表评论

亲,头像对么?

71 + 75 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7238 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap