Виртуальный ввод клавиш

Tillion_Lanester

Известный
Автор темы
1
0
Приветствую, хочу на python написать бота для прокачивания силы на majestic, проблема в том, что когда бот видит триггер в виде иконки(1 прикрепленное фото), он начинает пытаться нажать клавишу, если зайти в какой-нибудь текст. редактор, то он даже работает, но проблема в том, что GTA эти самые нажатия не видит. Уже весь stackoverflow облазил, но решения не могу найти. Может кто подсказать? Если нужен код - скину ниже

*Уточню, что в коде могут быть лишние/ненужные строки, т.к. не все убирал, пытаясь подобрать правильный вариант*

Code:
from python_imagesearch.imagesearch import *
import ctypes
import time
import pydirectinput

SendInput = ctypes.windll.user32.SendInput


#W = 0x11
#A = 0x1E
#S = 0x1F
#D = 0x20
#E = 0x12


PUL = ctypes.POINTER(ctypes.c_ulong)
class KeyBdInput(ctypes.Structure):
    _fields_ = [("wVk", ctypes.c_ushort),
                ("wScan", ctypes.c_ushort),
                ("dwFlags", ctypes.c_ulong),
                ("time", ctypes.c_ulong),
                ("dwExtraInfo", PUL)]

class HardwareInput(ctypes.Structure):
    _fields_ = [("uMsg", ctypes.c_ulong),
                ("wParamL", ctypes.c_short),
                ("wParamH", ctypes.c_ushort)]

class MouseInput(ctypes.Structure):
    _fields_ = [("dx", ctypes.c_long),
                ("dy", ctypes.c_long),
                ("mouseData", ctypes.c_ulong),
                ("dwFlags", ctypes.c_ulong),
                ("time",ctypes.c_ulong),
                ("dwExtraInfo", PUL)]

class Input_I(ctypes.Union):
    _fields_ = [("ki", KeyBdInput),
                 ("mi", MouseInput),
                 ("hi", HardwareInput)]

class Input(ctypes.Structure):
    _fields_ = [("type", ctypes.c_ulong),
                ("ii", Input_I)]


def PressKey(hexKeyCode):
    extra = ctypes.c_ulong(0)
    ii_ = Input_I()
    ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra) )
    x = Input( ctypes.c_ulong(1), ii_ )
    ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))

def ReleaseKey(hexKeyCode):
    extra = ctypes.c_ulong(0)
    ii_ = Input_I()
    ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra) )
    x = Input( ctypes.c_ulong(1), ii_ )
    ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))

while True:
    button_e = imagesearch("e.png")
    if button_e[0] != -1:
        print("position: ", button_e[0], button_e[1])
        pydirectinput.keyDown('e')
        time.sleep(0.3)
    else:
        print("E не найдена")
 

Вложения

  • e.png
    e.png
    385 байт · Просмотры: 1