Всем привет, ситуация такая пишу софт для эмуляторов и что бы выполнять нажатия по координатам, пользовался вот такой функцией. И все отлично работало на nox эмуляторе и в обычных окнах, но именно на ld player 9(такой же эмулятор как nox для андройда, но более производительный), клики не регистрируются почему-то.
def click_on_telegram(loc, bbox, hwnd):
if loc is None:
print("Координаты не найдены для клика.")
return
x, y = loc
window_x = bbox[0]
window_y = bbox[1]
click_x = window_x + x
click_y = window_y + y
if bbox[0] <= click_x <= bbox[2] and bbox[1] <= click_y <= bbox[3]:
local_x = click_x - window_x
local_y = click_y - window_y
l_param = win32api.MAKELONG(local_x, local_y)
win32gui.PostMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, l_param)
win32gui.PostMessage(hwnd, win32con.WM_LBUTTONUP, 0, l_param)
print(f"Клик по координатам внутри окна: ({local_x}, {local_y})")
else:
print("Координаты клика выходят за пределы окна.")
Sendmessage тоже пробовал, и проверял проходит ли клики в общем все базовые проверки вроде сделал.
При том если использовать pyautogui, pynput и тому подобные высокоуровневые клики, которые двигают именно твой курсор к координате и делают клик то все работает. Но вот нужно именно
без взаимодействием с основным курсором.
Сейчас нахожусь на этапе spy++ что бы понять что как с этой мышкой и какого параметра не хватает в win32api что бы регистрировало нажатие.
Может кто, кто знает как решить? Или там какой модуль на c++ написать, возможно? Или хотя бы направление куда копать.
UPD:
В итоге помогло решение через adb.
subprocess.run(['adb', '-s', device_serial, 'shell', 'input', 'tap', str(x), str(y)])