VB 用全局钩子,记录鼠标点击次数
来源:互联网 发布:js eval详解 编辑:程序博客网 时间:2024/06/04 17:52
'首先建立一个Module,并输入以下代码
Public 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
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)
Public Type MOUSEMSGS
X As Long 'x座标
Y As Long 'y座标
a As Long
b As Long
time As Long 'Window运行时间
End Type
Public Const WH_MOUSE_LL = 14
'-----------------------------------------
'消息
Public Const HC_ACTION = 0
'鼠标消息
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
Public Const WM_MOUSEACTIVATE = &H21
Public Const WM_MOUSEFIRST = &H200
Public Const WM_MOUSELAST = &H209
Public Const WM_MOUSEWHEEL = &H20A
Public MouseMsg As MOUSEMSGS
Public lHook As Long '记录Hook的值,以便退出程序的时候销毁Hook
Public lClick As Long, mClick As Long, rClick As Long, tClick As Long '用来统计鼠标各个键的按下次数
'鼠标钩子
Public Function CallMouseHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If code = HC_ACTION Then
CopyMemory MouseMsg, lParam, LenB(MouseMsg)
frmMain.Caption = "X=" + Str(MouseMsg.X) + " Y=" + Str(MouseMsg.Y)'在主窗口上显示鼠标的当前位置
Select Case wParam '根据不同鼠标动作进行处理,在这里只处理了鼠标按下的动作
Case WM_LBUTTONDOWN '左键按下
lClick = lClick + 1 '进行统计,并显示在住窗体的文本框上
tClick = tClick + 1
frmMain.txtMsg(0).Text = lClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0 '这里把返回值设定为0,保证鼠标动作正常完成
Case WM_MBUTTONDOWN '中键按下
mClick = mClick + 1
tClick = tClick + 1
frmMain.txtMsg(1).Text = mClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0
Case WM_RBUTTONDOWN '右键按下
rClick = rClick + 1
tClick = tClick + 1
frmMain.txtMsg(2).Text = rClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0
End Select
End If
If code <> 0 Then
CallMouseHookProc = CallNextHookEx(0, code, wParam, lParam) '使用CallNextHookEx,来保证鼠标钩子能够被其它程序使用
End If
End Function
'接下来,我们再给窗体里面添加代码
Private Sub AddHook() '安装鼠标钩子
lHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0)
End Sub
Private Sub DelHook()'卸除鼠标钩子
UnhookWindowsHookEx lHook
End Sub
Private Sub Form_Load() '窗体载入的时候,安装鼠标钩子
AddHook
End Sub
Private Sub Form_Unload(Cancel As Integer)'窗体卸载的时候,卸除鼠标钩子
DelHook
End Sub
- VB 用全局钩子,记录鼠标点击次数
- 鼠标全局钩子
- 全局鼠标钩子
- C#全局鼠标钩子
- C# 鼠标全局钩子
- 鼠标全局钩子
- VB 鼠标钩子实例
- VB.NET全局键盘鼠标钩子 [Vb.Net Hook](修正版)
- 使用钩子记录鼠标点击处网页元素
- 安装全局钩子程序(鼠标钩子)
- Delphi实现全局鼠标钩子
- Windows 全局 鼠标 钩子 DLL
- pyqt全局鼠标事件/钩子
- [VB+C-DLL]全局钩子
- VC++ Hook截取鼠标点击窗口消息的问题!全局钩子
- vb 模拟鼠标点击
- C#做的全局鼠标/键盘钩子
- 全局钩子监听键盘鼠标事件
- ViewState解码器
- MySQL + Hibernate configuration in Mac OS
- 面向对象设计原则——单一职责原则,开放-封闭原则
- jokers_i
- WF4.0 基础篇 (六) 数据的传递 Arguments 参数
- VB 用全局钩子,记录鼠标点击次数
- linux下对于ntfs分区的访问
- APUE笔记:进程 real user ID, effective user ID, saved set-user-ID
- php中 常量,变量的作用域和生存周期
- C++内存管理
- 6.17
- (转载) VC++ ListBox(列表框)的使用
- makefile自动化变量
- jQuery入门简介