一次windows程序消息分析的曲折经历

这是在尝试实现安卓模拟器模拟点击过程中,我使用spy++分析消息的经历。


对窗口模拟点击的方法不难,就是使用SendMessage()函数发送模拟消息。难点在于找到窗口句柄并分析出模拟点击对应的消息。而我之前对于windows消息机制了解甚少,为此还专门学习了一阵子spy++的使用方法,方法总结详见另一篇文章——《》。

下载了一个模拟器。通过spy++可以看出,这个模拟器有3个窗口。不过最下面的子窗口没有消息,有消息的是父窗口和子窗口。


为了方便起见,又安装了一个画图app。

主要测试方法是在模拟器中不停画点,如果模拟成功,应当会在画图app的画布中画出一个点。考虑到模拟器大小是720×1280,所以点击位置我折中取了(500,500).

请记住这个位置,我后来可是被这个给坑惨了大哭
……

消息列表一出来,刷新速度丧心病狂让我一脸懵逼:


这让我这个小萌新无从下手啊!折腾了好半天,最终发现:

  1. 标记“R”的是SendMessage()获得的返回值,没有必要去分析
  2. 子窗口会定时收到WM_TIMER消息,这个对分析没用,可以直接在spy++中禁用。
  3. 开启“原始消息参数”和“消息原始时间”有助于更好地进行分析。

设置如下



事后,在编写完成之后总结时,我认为消息分析应当分为以下部分:

1.    激活窗口(点开最小化的窗口或使用ALT+TAB切换到窗口),此时会发出一系列消息,不妨将其称为“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值