登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

miaozk2006

点滴积累与收藏:关于技术,关于生活

 
 
 

日志

 
 

VB 全局Hook鼠标消息  

2013-06-08 08:52:52|  分类: 编程-VB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
VB 全局Hook鼠标钩子,获取鼠标单击左键、鼠标坐标位置等。
以下是鼠标的按键消息:
按下 释放 按下(双击)
WM_NCLBUTTONDOWN=&HA1 WM_NCLBUTTONUP=&HA2 WM_NCLBUTTONDBLCLK=&HA3
WM_NCMBUTTONDOWN=&HA7 WM_NCMBUTTONUP=&HA8 WM_NCMBUTTONDBLCLK=&HA9
WM_NCRBUTTONDOWN=&HA4 WM_NCRBUTTONUP=&HA5 WM_NCRBUTTONDBLCLK=&HA6

form代码如下:

Option Explicit
Private Sub Form_Load()
    HooK
End Sub

Private Sub Form_Unload(Cancel As Integer)
    UnHooK
End Sub


Module代码:

Private Declare Function CallNextHookEx Lib "user32" _
                          (ByVal hHook As Long, _
                          ByVal nCode As Long, _
                          ByVal wParam As Long, _
                          lParam As Any) As Long

Private Declare Function SetWindowsHookEx Lib "user32" _
                          Alias "SetWindowsHookExA" _
                          (ByVal idHook As Long, _
                          ByVal lpfn As Long, _
                          ByVal hmod As Long, _
                          ByVal dwThreadId As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _
                          (ByVal hHook As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
                          Alias "RtlMoveMemory" _
                          (Destination As Any, _
                          Source As Any, _
                          ByVal Length As Long)

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Type MSLLHOOKSTRUCT
    pt As POINTAPI
    mouseData As Long
    Flags As Long
    time As Long
    dwExtraInfo As Long
End Type

Private Const WM_LBUTTONUP = &H202
Private Const WH_MOUSE_LL = 14

Private hHook As Long

Public Function MouseHook(ByVal nCode As Long, _
                       ByVal wParam As Long, _
                       ByVal lParam As Long) As Long

    Dim mhs As MSLLHOOKSTRUCT, pt As POINTAPI

    If wParam = WM_LBUTTONUP Then
        Call CopyMemory(mhs, ByVal lParam, LenB(mhs))
        pt = mhs.pt
        Call CopyMemory(p, ByVal lParam, Len(p))
        Debug.Print "左键单击    坐标:" & pt.x & "  "; pt.y
    End If

    Call CallNextHookEx(hHook, nCode, wParam, lParam)
End Function

Public Sub HooK()
    hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseHook, App.hInstance, 0)
End Sub

Public Sub UnHooK()
    Call UnhookWindowsHookEx(hHook)
End Sub
 

摘自:网络整理


  评论这张
 
阅读(750)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018