Управление BlueStacks на Python

Как можно управлять BlueStacks на Python? К примеру нажимать на кнопки (в игре) с помощи Python. Пробовал использовать appium и win32com но не не получилось подключится т.к. я не знаю как.


Ответы (1 шт):

Автор решения: Nikita

Можно использовать WinAPI с помощью модуля ctypes:

from ctypes import *
from ctypes.wintypes import *
from time import sleep

# Описания функций WinAPI

# https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-setcursorpos
windll.user32.GetCursorPos.restype = BOOL
windll.user32.GetCursorPos.argtypes = [LPPOINT]

# https://learn.microsoft.com/ru-ru/windows/win32/api/winuser/nf-winuser-setcursorpos
windll.user32.SetCursorPos.restype = BOOL
windll.user32.SetCursorPos.argtypes = (UINT, UINT)

# https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-mouse_event
windll.user32.mouse_event.restype = LPVOID
windll.user32.mouse_event.argtypes = (DWORD, DWORD, DWORD, DWORD, PULONG)

# Получить координаты курсора
def get_pos():
    # Структура POINT
    pos = POINT()

    # Вызов GetCursorPos с указателем на эту структуру
    windll.user32.GetCursorPos(pointer(pos))

    # Вернуть координаты в виде списка
    return [pos.x, pos.y]

# Клик
def click(x, y):
    # Получить координаты курсора до клика
    pos = get_pos()

    # Установить курсор в новое положение
    windll.user32.SetCursorPos(x, y)

    # Отправить сигнал нажатия левой кнопки мыши
    windll.user32.mouse_event(0x2, 0, 0, 0, None)

    # Небольшая задержка
    sleep(0.01)

    # Отправить сигнал отпускания левой кнопки мыши
    windll.user32.mouse_event(0x4, 0, 0, 0, None)

    # Вернуть курсор в положение до клика
    windll.user32.SetCursorPos(pos.x, pos.y)

→ Ссылка