解读spy++,鼠标按下雷电模拟器,产生的一系列Windows Message消息队列解读
最近想要用JNA写一个后台自动运行的窗口,但是弄了很久,发送sendmassage,总是什么反应都没有,所以一狠心,直接将实际操作点击鼠标产生的信息,全部解读一遍,一边看msdn,一边解读,我只是个四级没过的英语渣,太难了。
~~o(>_<)o ~~
(*꒦⌓꒦)
首先看一下我们的图:
目录:
可以在这里查找对应行数
- 目录:
- 在这里解读之前首先讲一下简单基本概念,
- 消息缩写解读
- 返回值解读:
- 1行:S(发送数据):
- 2行:R(返回的数据):
- 3行:发送数据:WM_SETCURSOR:
- 4行:WM_SETCURSOR返回值:fHalt Processing:Ture
- 5行:WM_NCMOUSEMOVE(P)
- 6行:WM_PARENTNOTIFY(发送)
- 7行:WM_PARENTNOTIFY(R返回)
- 8行:WM_MOUSEACTIVATE(S)
- 9行:WM_MOUSEACTIVATE(R)
- 10行 :WM_WINDOWPOSCHANGING(S)
- 11行:WM_WINDOWPOSCHANGING(R)
- 12行:WM_WINDOWPOSCHANGED(S)
- 13行:WM_WINDOWPOSCHANGED(R)
- 14行:WM_ACTIVATEAPP(S)
- 15行:WM_ACTIVATEAPP(R)
- 16行:WM_NCACTIVATE(S)
- 17行:WM_NCACTIVATE(R)
- 18行:WM_ACTIVATE(S)
- 19行:WM_IME_NOTIFY(S)
- 20行:WM_IME_NOTIFY(R)
- 21行:WM_SETFOCUS(S)
- 22行:WM_SETFOCUS(R)
- 23行:WM_ATIVATE(R)
在这里解读之前首先讲一下简单基本概念,
<000001>表示行数
000D0724:表示窗口句柄
S:表示通过WindowsAPI的SendMessage发送的消息
P:表示postMessage发送消息
R:表示返回值(Return)
WM_NCHITTEST:表示消息信息,msg
消息缩写解读
WM:wm系统是Windows Mobile的缩写,是 Microsoft 用于 Pocket PC 和 Smartphone 的软件平台。
NC:nc的英文全称是nonclient,和client相对应
加nc的是指非客户区消息
IME:IME是指Input Method Editors输入法编辑器,当系统侦测到暂时无需使用输入法,或者程序不兼容Windows 8时,将自动提醒无法使用,且右下角显示已禁用IME。如果使用鼠标或触摸屏激活焦点时需要使用输入法时,系统则会自动启用IME输入法以便使用键盘输入。
NOTIFY:notify—通知
返回值解读:
对每一行的窗口进行解读,可能有些不太准,有问题可以在评论下提醒一下
f类:
fHalt----父类暂停
hwndToplevel:顶层句柄-----就是我们点击选中窗口句柄
nHit Test:HTCLIENT—>击中测试:在客户端
uMsg:附带消息指令
1行:S(发送数据):
具体解析:我们可以知道这个是移动鼠标中产生的,移动的鼠标,坐标(666,300)
2行:R(返回的数据):
返回的是HTRIGHT,查看msdn可以知道:
在可调整大小窗口的右边框中(用户可以单击鼠标以水平调整窗口大小)。
WM_SETCURSOR:如果鼠标导致光标在窗口内移动,并且没有捕获鼠标输入,则发送到窗口。
3行:发送数据:WM_SETCURSOR:
参数解析:
hwnd:000D0724,父类,顶层窗口的句柄
nHittest:HTRIGHT,光标在窗口的右边框
wMouseMsg:WM_MouseMove------鼠标移动
fuActive:父窗口激活
4行:WM_SETCURSOR返回值:fHalt Processing:Ture
轮英语的重要性:Halt:停止; 阻止; 暂停; 小火车站(只有站台);
所以我们可以知道这个窗口的信息怎么解析:
父类进程是否是暂停的?是(ture)
这个又是干嘛呢?WM_MOUSEMOVE为post消息。对于几乎所有的鼠标消息,如果mouse没有被捕获(capture),那么将被发送到包含光标的窗口,否则发送到捕获鼠标的窗口。只有前景窗口可以Capture鼠标。使用SetCapture捕获鼠标,且一个时刻只能有一个窗口Capture鼠标。
https://blog.csdn.net/redoc_li/article/details/1655857
=想法能不能一秒分成很多秒,执行的时候setCapture,之后一毫秒只有重新修改
5行:WM_NCMOUSEMOVE(P)
HitTest:命中测试–
所以这句话的意思是:左边框命中测试,坐标(X,Y)
注意:这里的p代表是postMessage进行发送不是sendMessage
6行:WM_PARENTNOTIFY(发送)
当子代窗口上发生重要操作时,发送到窗口。该消息现在被扩展到包括WM_POINTERDOWN事件。创建子窗口时,系统在创建窗口的CreateWindow或CreateWindowEx函数之前发送WM_PARENTNOTIFY。当子窗口被销毁时,系统在进行销毁该窗口的任何处理之前发送消息。
理解:子窗口发生一个重要事件,通知父窗口,在父窗口下发生事件:鼠标左键按下,坐标
7行:WM_PARENTNOTIFY(R返回)
8行:WM_MOUSEACTIVATE(S)
参数解析:
hwndToplevel:顶层句柄-----就是我们点击选中窗口句柄
nHit Test:HTCLIENT—>击中测试:在客户端
uMsg:WM_LBUTTONDOWN—>鼠标按下左键
9行:WM_MOUSEACTIVATE(R)
参数解析:
fuActive:MA_ACTIVATE—>>激活窗口,不丢弃鼠标消息。
10行 :WM_WINDOWPOSCHANGING(S)
发送到 Z order中的大小、位置或位置将因调用SetWindowPos函数或其他窗口管理函数而发生更改的窗口,也就是说将窗口的一些基本信息发送出去。
11行:WM_WINDOWPOSCHANGING(R)
12行:WM_WINDOWPOSCHANGED(S)
这个消息与上面的消息很像,但是看了一下mdsn发现的他们的解释基本都是不一样的,所以查一下的最后找到了这篇文章:
https://devblogs.microsoft.com/oldnewthing/20080116-00/?p=23803#:~:text=The%20WM_WINDOWPOSCHANGING%20message%20is%20sent%20early%20in%20the,the%20WM_WINDOWPOSCHANGING%20message%20and%20modifying%20the%20WINDOWPOS%20structure.
但是如果我们直接把这两个的消息翻译成为小写的haul,我们就很容易看出来了
wm_windowposchanging 和 wm_windowposchanged
wm_window pos changing 和 wm_window pos changed
一个正在进行时,一个过去式。
dddd;
所以他们附加的信息lpwp的值才会是一样的
13行:WM_WINDOWPOSCHANGED(R)
返回值,不解释了
14行:WM_ACTIVATEAPP(S)
WM_ACTIVATEAPP表示如果这个不是我们当前用的激活的窗口,那么,这个信息就会在被激活之前发送过去判断的
所以这个的意思是,这个窗口是不是已经被激活了,fwActive表示父类窗口已激活,==这个窗口已经被激活了
之后就停掉之前前线程窗口,在我们没有激活窗口之前的的线程
所以dwThreadID中d的意思应该是摧毁(destroy),摧毁当前执行的线程,到另外一个一个线程中去
不过线程id为000000:很可能是因为没有这个线程
15行:WM_ACTIVATEAPP(R)
16行:WM_NCACTIVATE(S)
表示是非聚焦的窗口激活
17行:WM_NCACTIVATE(R)
18行:WM_ACTIVATE(S)
fwActivate:WA_CLICKACTIVE------->通过鼠标点击激活。
fminimized-------表示父类是否是最小化,:false
hwndPreviouse:前一个句柄:null
19行:WM_IME_NOTIFY(S)
从缩写中可以看懂,Windows系统_键盘__通知
发送到应用程序,通知它对IME(键盘焦点)窗口的更改。
dwCommand:IMN_OPENSTATUSWINDOW------>小写:Imn_openStatusWindow-----》窗口开启状态
应用程序处理此命令以自行显示IME的状态窗口
20行:WM_IME_NOTIFY®
21行:WM_SETFOCUS(S)
hwndLosefocus:失去焦点的句柄为null
22行:WM_SETFOCUS®
23行:WM_ATIVATE(R)
窗口激活,对应第18行
最后看评论收藏,赞数更新
~( ̄▽ ̄~)(~ ̄▽ ̄)~
解读spy++,鼠标按下雷电模拟器,产生的一系列Windows Message消息队列解读相关推荐
- 雷电模拟器9如何设置网桥
好久没有敲代码了,人都变懒了,最近又看看CSDN,发现还有3个粉丝!! 所以为了粉丝继续开始干!! 准备工作:由于看了下雷电模拟器9(x64位可以)的Wifi的ip地址 注意下载时会有写我下的9.X版 ...
- 解决雷电模拟器在windows 10下无法桥接网卡的问题
https://www.ldmnq.com/forum/thread-60719-1-1.html https://www.renyiwei.com/archives/1947.html 解决雷电模拟 ...
- 雷电模拟器多开ip修改器_模拟器怎样才能更换不同ip地址?
手游游戏现如今早已是绝大部分群体消磨时间的最佳的专用工具了,可是手游游戏常常玩颈部会疼,没法只有在电脑上下载个手机模拟器上手游游戏玩下,随后见到1个游戏多开器,能否游戏多开游戏多上几个号一块玩那般级别 ...
- 雷电模拟器通过命令行设置分辨率及其他命令
通过ldconsole命令修改模拟器分辨率,起初我再试的时候发现设置完成后,模拟器分辨率还是老样子: ldconsole.exe modify --index 0 --resolution 720,1 ...
- 香肠派对学计算机,香肠派对电脑版:雷电模拟器教你轻松吃鸡
原标题:香肠派对电脑版:雷电模拟器教你轻松吃鸡 大家吼!蠢萌风格的吃鸡手游<香肠派对>已经风靡了一段时间,看到有不少小伙伴在我们的雷电论坛里提出了各种建议,而Rai酱我!作为雷电老司机!今 ...
- 使用Fiddler5和雷电模拟器4.0.83的抓包配置
使用Fiddler5和雷电模拟器4.0.83的抓包配置 工具 Fiddler配置 步骤 1.先将FD的证书导出到桌面 2.使用Git Bash工具,对证书进行修改 2.1在桌面右键,打开Git Bas ...
- 手机安装charles证书与雷电模拟器4.0安装charles证书流程
在做手机app测试时,有时候会要求进行手机app弱网测试,让公司的手机app在弱网下进行测试,查看app功能是否正常. 使用charles进行手机app弱网测试: 第一步: 1.配置手机端,让char ...
- 雷电模拟器导入burp证书
雷电模拟器导入burp证书 1. 打开设置中的wlan菜单,鼠标左键常按弹出菜单,点击修改网络,准备添加代理 2.勾选高级选项,选择手动代理,填写cmd中ipconfig的本机ip,未被占用的端口. ...
- getprop导出雷电模拟器Android系统的build.prop信息
雷电模拟器采用了安卓系统,在system\目录下有一个类似Windows系统注册表的文件build.prop,记录了一些参数属性,通过getprop,我们还可以获取,/default.prop,/in ...
最新文章
- 2013计算机视觉代码合集
- python基础:冒泡和选择排序算法实现
- SQL 2005 Oct CTP 和VS2005 for CTP安装的情况
- 职称计算机应用能力考试模拟题,2016年职称计算机考试模拟题
- 23 年后来自生命溪流的回响 — FF7 Remake 音乐深度解析
- 后端技术:Web安全常见漏洞和修复建议,值得收藏!
- Prosjecni(构造)
- jquery修改a标签的href链接和文字
- 更新--本地检查需要下载/删除的文件,然后做替换/删除,并重启
- CentOS:linux开放指定端口命令
- Django中views笔记
- 将n划分成最大数不超过m的划分数
- python装饰器class_Python装饰器dataclass详解
- 成功凤凰刷机刷出诺基亚E5系统版本042.014纯净简体中文版
- Netty系列三、Netty实战篇
- php上证指数抽奖代码,上证指数etf基金代码,场内etf基金一览表
- Python爬虫入门【6】:蜂鸟网图片爬取之一
- CC2530 实现无线串口
- 基于Paddle Lite在Android手机上实现图像分类
- “三权分立”模型之角色模型
热门文章
- 用access建立一个试题库_access理论考试题库(答案版)
- kafka-03kafka消息引擎,流处理平台,快的原因
- 探路者战略合作oTMS 布局智慧物流
- hpdl388安装2012系统_惠普Hp DL380 GEN9 UEFI模式安装win2008 r2的方法
- golang力扣leetcode 675.为高尔夫比赛砍树
- DB Brower for Sqlite更新
- 「OceanBase 4.1 体验」OceanBase:解读领先的分布式数据库系统,功能与体验全解析
- 《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》论文笔记
- 计量经济学五个基本假定
- 深度学习算法和机器学习算法_是否可以使机器学习算法无需编码