最近想要用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消息队列解读相关推荐

  1. 雷电模拟器9如何设置网桥

    好久没有敲代码了,人都变懒了,最近又看看CSDN,发现还有3个粉丝!! 所以为了粉丝继续开始干!! 准备工作:由于看了下雷电模拟器9(x64位可以)的Wifi的ip地址 注意下载时会有写我下的9.X版 ...

  2. 解决雷电模拟器在windows 10下无法桥接网卡的问题

    https://www.ldmnq.com/forum/thread-60719-1-1.html https://www.renyiwei.com/archives/1947.html 解决雷电模拟 ...

  3. 雷电模拟器多开ip修改器_模拟器怎样才能更换不同ip地址?

    手游游戏现如今早已是绝大部分群体消磨时间的最佳的专用工具了,可是手游游戏常常玩颈部会疼,没法只有在电脑上下载个手机模拟器上手游游戏玩下,随后见到1个游戏多开器,能否游戏多开游戏多上几个号一块玩那般级别 ...

  4. 雷电模拟器通过命令行设置分辨率及其他命令

    通过ldconsole命令修改模拟器分辨率,起初我再试的时候发现设置完成后,模拟器分辨率还是老样子: ldconsole.exe modify --index 0 --resolution 720,1 ...

  5. 香肠派对学计算机,香肠派对电脑版:雷电模拟器教你轻松吃鸡

    原标题:香肠派对电脑版:雷电模拟器教你轻松吃鸡 大家吼!蠢萌风格的吃鸡手游<香肠派对>已经风靡了一段时间,看到有不少小伙伴在我们的雷电论坛里提出了各种建议,而Rai酱我!作为雷电老司机!今 ...

  6. 使用Fiddler5和雷电模拟器4.0.83的抓包配置

    使用Fiddler5和雷电模拟器4.0.83的抓包配置 工具 Fiddler配置 步骤 1.先将FD的证书导出到桌面 2.使用Git Bash工具,对证书进行修改 2.1在桌面右键,打开Git Bas ...

  7. 手机安装charles证书与雷电模拟器4.0安装charles证书流程

    在做手机app测试时,有时候会要求进行手机app弱网测试,让公司的手机app在弱网下进行测试,查看app功能是否正常. 使用charles进行手机app弱网测试: 第一步: 1.配置手机端,让char ...

  8. 雷电模拟器导入burp证书

    雷电模拟器导入burp证书 1. 打开设置中的wlan菜单,鼠标左键常按弹出菜单,点击修改网络,准备添加代理 2.勾选高级选项,选择手动代理,填写cmd中ipconfig的本机ip,未被占用的端口. ...

  9. getprop导出雷电模拟器Android系统的build.prop信息

    雷电模拟器采用了安卓系统,在system\目录下有一个类似Windows系统注册表的文件build.prop,记录了一些参数属性,通过getprop,我们还可以获取,/default.prop,/in ...

最新文章

  1. 2013计算机视觉代码合集
  2. python基础:冒泡和选择排序算法实现
  3. SQL 2005 Oct CTP 和VS2005 for CTP安装的情况
  4. 职称计算机应用能力考试模拟题,2016年职称计算机考试模拟题
  5. 23 年后来自生命溪流的回响 — FF7 Remake 音乐深度解析
  6. 后端技术:Web安全常见漏洞和修复建议,值得收藏!
  7. Prosjecni(构造)
  8. jquery修改a标签的href链接和文字
  9. 更新--本地检查需要下载/删除的文件,然后做替换/删除,并重启
  10. CentOS:linux开放指定端口命令
  11. Django中views笔记
  12. 将n划分成最大数不超过m的划分数
  13. python装饰器class_Python装饰器dataclass详解
  14. 成功凤凰刷机刷出诺基亚E5系统版本042.014纯净简体中文版
  15. Netty系列三、Netty实战篇
  16. php上证指数抽奖代码,上证指数etf基金代码,场内etf基金一览表
  17. Python爬虫入门【6】:蜂鸟网图片爬取之一
  18. CC2530 实现无线串口
  19. 基于Paddle Lite在Android手机上实现图像分类
  20. “三权分立”模型之角色模型

热门文章

  1. 用access建立一个试题库_access理论考试题库(答案版)
  2. kafka-03kafka消息引擎,流处理平台,快的原因
  3. 探路者战略合作oTMS 布局智慧物流
  4. hpdl388安装2012系统_惠普Hp DL380 GEN9 UEFI模式安装win2008 r2的方法
  5. golang力扣leetcode 675.为高尔夫比赛砍树
  6. DB Brower for Sqlite更新
  7. 「OceanBase 4.1 体验」OceanBase:解读领先的分布式数据库系统,功能与体验全解析
  8. 《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》论文笔记
  9. 计量经济学五个基本假定
  10. 深度学习算法和机器学习算法_是否可以使机器学习算法无需编码