spy++ 句柄消息详解
使用spy++捕获到的消息详解
主要是今天正好自己用到。
原来也有用过SPY++查看消息,然后自己SendMessage或者PostMessage 直接发送消息给目标程序。但是原来一用就有效果,今天要发的窗口是QT写的,所以就想着把消息尽量弄得和SPY++里捕获到的一样,看看是否能行。
嗯,最终依然还是不行。不过也明白了SPY++捕获到的消息字串具体对应的是哪个参数了,特在此记录,方便以后查找,也方便需要的朋友。

因为是重复的,我就只讲顶上的三条就行。
第一条:<00001> 00130042 S WM_SETCURSOR hwnd:00130042 nHittest:HTCLIENT wMouseMsg:WM_MOUSEMOVE
<00001>:是SPY++捕获到的消息序号,主要是它记录顺序用。
00130042:这是目标窗口句柄的16进制。
S:这里第一行是S,第二行是R,第三行是P。一起说了。S 是指使用 SendMessage 发送的消息,R 是使用SendMessage发送消息后得到的返回值。P 是使用PostMessage 发送的消息。
WM_SETCURSOR:发送的消息值,也就是 SendMessage 的第二个参数(PostMessage 参数与SendMessage的一样)。
从这里往后,就分别是 SendMessage 的第三个参数和第四个参数的值了,但是它们不是固定对应的,是根据具体消息值不同而不同的。
第一条在消息值 WM_SETCURSOR 之后,是 hwnd:00130042,可以看出这是一个句柄,也就是目标窗口的句柄。同时这里是 SendMessage 的第三个参数。
然后在 hwnd:00130042 的后面有两个数据,而我们的SendMessage只剩最后一个参数了,所以后面的两个数据都是SendMessage的最后一个参数。一个低位,一个高位。
SPY++捕获的第一条消息,要使用代码发送实现一样的数据的话,就应该是:
SendMessage(00130042,WM_SETCURSOR,00130042,HTCLIENT+WM_MOUSEMOVE*65536)
注意,上面的代码我并没有使用任何一种编程语言来表示,这样大家都能看懂,如果要用的话,你只需要把上面的代码换成你所使用的编程语言就行了。
然后下面来说SPY++的第二条。
<00002>00130042 R WM_SETCURSOR fHaltProcessing:False
这条不需要我们操作,我们使用SendMessage发送了之后,就会有类似的返回值回来。
第三条:<00003> 00130042 P WM_MOUSEMOVE fwKeys:0000 xPos:1088 yPos:27
我们直接说 WM_MOUSEMOVE 之后的东西就行了,WM_MOUSEMOVE包含之前的看上面的第一条。
WM_MOUSEMOVE 之后是 fwKeys:0000 ,因为WM_MOUSEMOVE是PostMessage的第二个参数(为什么是PostMessage而不是SendMessage?上面有说到)
所以这个fwKeys:0000就是PostMessage的第三个参数了,而且值是 0 ,我们不用看前面的 fwKeys ,只需要看 : 后面,它的值就行了。
fwKeys:0000 是第三个参数了,那它之后的就是第四个参数。
同样,还有两个数据,低位和高低。
最后,这条捕获的消息用代码实现就是:
PostMessage(00130042,WM_MOUSEMOVE,0,1088 + 27 × 65536)
spy++ 句柄消息详解的更多相关文章
- MFC消息详解 (WindowProc|OnCommand|OnNotify)
1. 怎样使用MFC发送一个消息用MFC发送一个消息的方法是, 首先,应获取接收消息的CWnd类对象的指针: 然后,调用CWnd的成员函数SendMessage( ). LRESULT Res=pWn ...
- Web Service学习之八:Soap消息详解
一.区别概念 WSDL是网络服务描述语言,是XML文档:它包含一系列描述某个web service的定义或者说是规则.尤其是定义了传输Sope消息的结构 Soap:简单对象访问协议,是交换数据的一种协 ...
- WM_PAINT消息详解,使用InvalidateRect或InvalidateRgn函数刻意产生WM_PAINT消息(WIN7里有变化,“调整视觉效果”,将“启用桌面组合”去掉)
什么时候会触发WM_PAINT消息消息呢? 以下内容来自大名鼎鼎的<Windows程序设计(第五版)> 大多数Windows程序在WinMain中进入消息循环之前的初始化期间都要呼叫函数U ...
- 微信小程序模板消息详解
先放代码 wxml: <form name='pushMsgFm' report-submit bindsubmit='orderSign'> <view> 单号: 0< ...
- RabbitMQ中Confirm确认与Return返回消息详解(八)
理解Confirm消息确认机制: 消息的确认,是指生产者投递消息后,如果Broker收到消息,则会给我们生产这一个应答. 生产者进行接收应答,用来确定这条消息是否正常的发送到Broker,这种方式也是 ...
- ActiveMQ学习总结(5)——Java消息服务JMS详解
JMS: Java消息服务(Java Message Service) JMS是用于访问企业消息系统的开发商中立的API.企业消息系统可以协助应用软件通过网络进行消息交互. JMS的编程过程很简单,概 ...
- SIP协议参数详解
1.1 SIP消息分类 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切. SIP协议将Server和User Agent之间的通讯的 ...
- HTTP消息头详解
HTTP是一个属于应用层面的面向对象的协议,由于其便捷.快速的方式.适用于分布式超媒体信息系统.于1990年提出 HTTP 协议主要特点概括如下 1.支持客户/服务器模式. 2.简单快速 请求方法常用 ...
- WCF技术剖析之十七:消息(Message)详解(下篇)
原文:WCF技术剖析之十七:消息(Message)详解(下篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]< ...
随机推荐
- 西门子Step7中DB块结构导出
Step7 通过变量表可以导出内存M地址和I,Q,T,C地址的变量,以及DB块的名称.怎么导出DB块的内部结构结构呢.即如何导出结构内的定义呢? 可以通过“选择某个DB块”,通过菜单命令“File&g ...
- 范畴论-一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已
范畴即为结构:包含要素和转化. 范畴为高阶类型. 函子为高阶函数.函子的输入为态射.函子为建立在态射基础上的高阶函数.函子用于保持范畴间映射的结构.态射用于范畴内部的转换. 群为运算规则的约束. 自函 ...
- C#—接口和抽象类的区别?
一.接口 接口是指对协定进行定义的引用类型,其他类型实现接口,以保证它们支持某些操作.接口指定必须由类提供的成员或实现它的其他接口.与类相似,接口可以包含方法.属性.索引器和事件作为成员. 1.接口存 ...
- Centos7从3.10升级内核到4.9后无法启动解决办法:mpt[23]sas驱动问题
Centos7升级内核后无法启动解决办法:mpt[23]sas驱动问题 前言 这个问题存在有一段时间了,之前做的centos7的ISO,在进行内核的升级以后就存在这个问题: 系统盘在板载sata口上是 ...
- Vue.js大总结
最近回顾了一下Vue.js的基础知识,把认为重要的几个点简单的罗列了出来 vue渐进式的理解 vue可以开发很多插件,可以把很多插件组合到一起,渐进的增加vue的功能 update beforeUpd ...
- qbxt 考前集训 Day1
立方数(cubic) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数 ...
- rsync增量同步标志位详细解释
rsync非常强大,下面是我用rsync做目录备份时用到的参数: rsync -ruPi -plEt /home/op/photo/ /remote_backup/photo/ --dry-run - ...
- vue.js 中 data, prop, computed, method,watch 介绍
vue.js 中 data, prop, computed, method,watch 介绍 data, prop, computed, method 的区别 类型 加载顺序 加载时间 写法 作用 备 ...
- Java开发编码规范
第一章 代码开发规范及其指南 一.1 目的 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失.(这些规范并不是一定要绝对遵守,但是一定要让程序有 ...
- Appendix B: Netsh Command Syntax for the Netsh Firewall Context
11 out of 19 rated this helpful - Rate this topic Published: December 17, 2004 The following Netsh c ...