btzhou 发表于 2023-6-5 13:54:54

关于PostMessage后台鼠标的问题。

最近在学着用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操作模拟器。

btzhou 发表于 2023-6-7 08:54:47

绿色风 发表于 2023-6-6 20:22
用雷电模拟器,使用大漠截图,adb操作模拟器。

我那个游戏貌似只能用mumu模拟器。。其他模拟器玩不了。装了谷歌三件套不行,装ourplay也不行,所以才用mumu,不过没试过adb操作模拟器的方式。谢谢大佬提供的方案。。我一会儿试试。。

tubaba 发表于 2023-6-7 08:55:26

try _WinAPI_MakeLong(100,100)

btzhou 发表于 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

btzhou 发表于 2023-6-14 13:52:48

没找到从哪里放到已解决去!!

afan 发表于 2023-6-14 14:31:50

坐标参数也可以直接 '0x' & Hex($y, 4) & Hex($x, 4)

btzhou 发表于 2023-6-15 10:12:13

afan 发表于 2023-6-14 14:31
坐标参数也可以直接 '0x' & Hex($y, 4) & Hex($x, 4)

谢谢大佬。
页: [1]
查看完整版本: 关于PostMessage后台鼠标的问题。