找回密码
 加入
搜索
查看: 1126|回复: 7

[AU3基础] 关于PostMessage后台鼠标的问题。

[复制链接]
发表于 2023-6-5 13:54:54 | 显示全部楼层 |阅读模式
最近在学着用AU3写安卓模拟器里游戏的脚本,但是在使用PostMessage函数插入后台鼠标的时候模拟器没反应,试过用dllcall和_WINAPI_PostMessage,都没用,环境是mumu模拟器,代码原句
DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x200, "int", 0, "long", "100,100")
_WinAPI_PostMessage($hWnd,"WM_LBUTTONDOWN",0,"100,100")
请问,是因为 lParam 的值不对?还是因为需要操作的是$hWnd的子句柄,而我却给父句柄发送消息?
发表于 2023-6-6 20:22:38 | 显示全部楼层
用雷电模拟器,使用大漠截图,adb操作模拟器。
 楼主| 发表于 2023-6-7 08:54:47 | 显示全部楼层
绿色风 发表于 2023-6-6 20:22
用雷电模拟器,使用大漠截图,adb操作模拟器。

我那个游戏貌似只能用mumu模拟器。。其他模拟器玩不了。装了谷歌三件套不行,装ourplay也不行,所以才用mumu,不过没试过adb操作模拟器的方式。谢谢大佬提供的方案。。我一会儿试试。。
发表于 2023-6-7 08:55:26 | 显示全部楼层
try _WinAPI_MakeLong(100,100)
 楼主| 发表于 2023-6-14 13:35:25 | 显示全部楼层
本帖最后由 btzhou 于 2023-6-14 13:37 编辑

已解决。没用adb操作,因为adb shell没有按下,抬起的操作,如果要用就只能通过滑动坐标1=坐标2加延时的方式。测试如果延时过程中需要抬起操作就只能用点击操作中断,但第二次滑动操作会出bug,并且adb响应速度特别慢,所以重新研究了postmessage。下面的可用代码
DllCall("user32.dll", "int", "PostMessage", "hwnd", $hWnd, "int", 0x201, "int", 1, "long", BitOR($y * 0x10000, BitAND($x, 0xFFFF))) ;左键按下
DllCall("user32.dll", "int", "PostMessage", "hwnd", $hWnd, "int", 0x202, "int", 0, "long", BitOR($y * 0x10000, BitAND($x, 0xFFFF)))  ;左键抬起
DllCall("user32.dll", "int", "PostMessage", "hwnd", $hWnd, "int", 0x204, "int", 2, "long", BitOR($y * 0x10000, BitAND($x, 0xFFFF))) ;右键按下
DllCall("user32.dll", "int", "PostMessage", "hwnd", $hWnd, "int", 0x205, "int", 0, "long", BitOR($y * 0x10000, BitAND($x, 0xFFFF)))  ;右键抬起

winAPI对应16进制表
https://blog.csdn.net/biyusr/article/details/7236849
 楼主| 发表于 2023-6-14 13:52:48 | 显示全部楼层
没找到从哪里放到已解决去!!
发表于 2023-6-14 14:31:50 | 显示全部楼层
坐标参数也可以直接 '0x' & Hex($y, 4) & Hex($x, 4)
 楼主| 发表于 2023-6-15 10:12:13 | 显示全部楼层
afan 发表于 2023-6-14 14:31
坐标参数也可以直接 '0x' & Hex($y, 4) & Hex($x, 4)

谢谢大佬。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 11:34 , Processed in 0.076193 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表