VB无所不能之三:VB截获Windows消息的钩子
为什么80%的码农都做不了架构师?>>>
本文地址:http://blog.csdn.net/useway 《Java程序员,上班那点事儿》
四、钩子类型
2) 系统钩子:监视系统中的所有线程的事件消息。
Dim typMHS As MSLLHOOKSTRUCT, pt As POINTAPI
Call CopyMemory(typMHS, ByVal lparam, LenB(typMHS))
pt = typMHS.pt
'If PtInRect(hRT, pt.x, pt.y) <> 0 Then
' HookProc = 1 '取消原本要完成的動作
'Else
Form1.Caption = "mouse Cursor at " + CStr(pt.x) + "," + CStr(pt.y)
HookProc = 0 '令待完成的動作繼續完成
'End If
End If
If wParam = WM_LBUTTONDOWN Then
Debug.Print "l"
End If
If wParam = WM_RBUTTONDOWN Then
Debug.Print "r"
End If
'If nCode < 0 Then
HookProc = CallNextHookEx(hHook, nCode, wParam, lparam)
' Exit Function
'End If
End Function
wParam,lParam:包含了拦截到的消息内容,同样它也与Hook的种类和nCode的值不同而不同。比如在键盘钩子(KeyBoard)中,wParam则是按键返回码。如果是鼠标事件,那么包含的鼠标的位置信息和按键信息。
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length 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 Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lparam As Any) As Long
Private Const WH_MOUSE_LL As Long = 14
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_MBUTTONDOWN = &H207
Private Const WM_MBUTTONUP = &H208
Private Const WM_MBUTTONDBLCLK = &H209
Private Const WM_MOUSEACTIVATE = &H21
Private Const WM_MOUSEFIRST = &H200
Private Const WM_MOUSELAST = &H209
Private Const WM_MOUSEWHEEL = &H20A '以上是鼠标的各个值
x As Long
y As Long
End Type
pt As POINTAPI
mouseData As Long
Flags As Long
time As Long
dwExtraInfo As Long
End Type
If hHook = 0 Then
hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf HookProc, App.hInstance, 0)
End If
End Sub
If hHook <> 0 Then
Call UnhookWindowsHookEx(hHook)
hHook = 0
End If
End Sub
Dim typMHS As MSLLHOOKSTRUCT, pt As POINTAPI
Call CopyMemory(typMHS, ByVal lparam, LenB(typMHS))
pt = typMHS.pt
Debug.Print "mouse Cursor at " + CStr(pt.x) + "," + CStr(pt.y)
End If
If wParam = WM_LBUTTONDOWN Then
Debug.Print "l"
End If
If wParam = WM_RBUTTONDOWN Then
Debug.Print "r"
End If
HookProc = CallNextHookEx(hHook, nCode, wParam, lparam)
End Function
EnableHook
End Sub
FreeHook
End Sub
原文链接: http://blog.csdn.net/useway/article/details/4358169
转载于:https://my.oschina.net/dtec/blog/44948
VB无所不能之三:VB截获Windows消息的钩子相关推荐
- c#中通过截获windows消息禁止改变窗体大小
private const int WM_SYSCOMMAND = 0x112; private const int MF_REMOVE = 0x1000; priva ...
- VB无所不能之五:建立“标准”DLL动态链接库文件(1)
VB无所不能之五:建立"标准"DLL动态链接库文件(1) --作者:钟声 博客地址:http://useway.blog.51cto.com 动态链接库经常被认为是VC或者Deph ...
- VB为自己的程序设定消息(可接收处理)
VB为自己的程序设定消息(可接收处理) Posted by JiaJia 5 March,2009 (0)Comment 用API函数 SetWindowLong 指定处理消息的窗口过程为自定义的函数 ...
- VB无所不能之七:VB的多线程(2)
云查杀很牛X的金山毒霸!免费啦!2011下载链接! 久违啦,我今天终于又可以写博客了,VB无所不能这个系列写作途中总是磕磕绊绊的,终于写到第七篇多线程的时候,中断了长达1个多月的时间没有更新新帖,对大 ...
- VB无所不能之二:利用GDI+处理图像格式转换
VB无所不能之二:利用GDI+处理图像格式转换 --作者:钟声 我今天想再续写一篇关于VB的有关文件格式转换的文章. 对于Windows编程来说,除了处理网络协议以外,处理几种类型的文件格式更加重要, ...
- VB实现向窗口发送按键消息
VB实现向窗口发送按键消息 : 嵌入式模拟键盘 待解决问题 vb WM_KEYDOWN 参数设置???? id="question_content">Private Decl ...
- Windows 消息大全
高级语言程序的汇编解析 在高级语言中,如C和PASCAL等等,我们不再直接对硬件资源进行操作,而是面向于问题的解决,这主要体现在数据抽象化和程序的结构化.例如我们用变量名来存取数据,而不再关心这个数据 ...
- 大漠找图算法_GitHub - jozhn/op: op插件(类似大漠插件),Windows消息模拟,gdi,dx,opengl截图,找图,找字(OCR),其他实用算法...
Overview OP(operator & open)是一个开源插件(类似大漠插件).主要特点:Windows消息模拟,后台截图,找图,字符识别(OCR),以及其他实用功能...使用c++编 ...
- Windows消息机制详解
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...
最新文章
- javascritp笔记1
- linux系统调用和库函数调用的区别
- 中法线如何反转_凹凸贴图、法线贴图、置换贴图傻傻分不清?
- ASP.NET十分有用的页面间传值方法(转)
- sql倒序查询语句_SQL丨1.基本查询语句复习
- Java 面向对象编程的三大特性——封装、继承、多态
- react ui框架_Web开发 React 学习(二十)连载基础篇大结局
- WordPress: 使用 wp_insert_attachment 上传附件
- 基于JAVASCRIPT操作XML的无刷新分页
- java.lang.IllegalArgumentException: name MUST NOT NULL! at org.nutz.dao.impl.NutDao.fetch
- Android UI学习之SeekBar
- Linux输入输出重定向和文件查找值grep命令
- 算法导论学习--学习笔记0527
- linux服务器生成密钥后无法登陆,securecrt用密钥安全登陆服务器
- 新版阿里云服务器的安全组配置
- Farkas'Lemma 和 S-Lemma
- IOS下localstorage不起作用提示
- 曾国藩《挺经》卷七英才
- 看完,感触很多 “IT技术开发人员获得成功的六大步骤”
- UNI-APP_uni-ap自动获取状态栏高度,自定义导航栏组件