关于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的子句柄,而我却给父句柄发送消息?
用雷电模拟器,使用大漠截图,adb操作模拟器。 绿色风 发表于 2023-6-6 20:22
用雷电模拟器,使用大漠截图,adb操作模拟器。
我那个游戏貌似只能用mumu模拟器。。其他模拟器玩不了。装了谷歌三件套不行,装ourplay也不行,所以才用mumu,不过没试过adb操作模拟器的方式。谢谢大佬提供的方案。。我一会儿试试。。 try _WinAPI_MakeLong(100,100) 本帖最后由 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 没找到从哪里放到已解决去!! 坐标参数也可以直接 '0x' & Hex($y, 4) & Hex($x, 4) afan 发表于 2023-6-14 14:31
坐标参数也可以直接 '0x' & Hex($y, 4) & Hex($x, 4)
谢谢大佬。
页:
[1]