Определение и открытие программ из панели задач с помощью Python

#python #python-3.x

#Python #python-3.x

Вопрос:

Итак, я вроде как новичок в Python, и недавно я создал программу, которая автоматически заполняет мой код и имя пользователя в игре, но значок запуска игры перемещается, и программа работает не так хорошо. Есть ли какой-либо способ, которым я могу автоматически найти положение значка и щелкнуть по нему? Вот код (он плохой):

 from pynput.keyboard import Key, Controller as KeyboardController
from pynput.mouse import Button, Controller as MouseController
import time

keyboard = KeyboardController()
mouse = MouseController()
choice=0
Run = True

while Run :

    choice= input("What account do you want?(1,2,3): ")

    if choice == "1":
        time.sleep(0.5)
        mouse.position = (567, 1060)#cords of where launcher has to be to work#
        mouse.press(Button.left)
        mouse.release(Button.left)
        time.sleep(0.5)
        mouse.position = (544,470)
        mouse.press(Button.left)
        mouse.release(Button.left)
        time.sleep(0.5)
        keyboard.type('USERNAME')
        time.sleep(0.5)
        keyboard.press(Key.tab)
        keyboard.release(Key.tab)
        time.sleep(1)
        keyboard.type('password')
        time.sleep(0.5)
        keyboard.press(Key.enter)
        keyboard.release(Key.enter)
        Run = False

    if choice == "2":
        time.sleep(0.5)
        mouse.position = (567, 1060)#cords of where launcher has to be to work#
        mouse.press(Button.left)
        mouse.release(Button.left)
        time.sleep(0.5)
        mouse.position = (544,470)
        mouse.press(Button.left)
        mouse.release(Button.left)
        time.sleep(0.5)
        keyboard.type('USERNAME')
        time.sleep(0.5)
        keyboard.press(Key.tab)
        keyboard.release(Key.tab)
        time.sleep(1)
        keyboard.type('password')
        time.sleep(0.5)
        keyboard.press(Key.enter)
        keyboard.release(Key.enter)
        Run = False
        
    if choice == "3":
        time.sleep(0.5)
        mouse.position = (567, 1060)#cords of where launcher has to be to work#
        mouse.press(Button.left)
        mouse.release(Button.left)
        time.sleep(0.5)
        mouse.position = (544,470)
        mouse.press(Button.left)
        mouse.release(Button.left)
        time.sleep(0.5)
        keyboard.type('USERNAME')
        time.sleep(0.5)
        keyboard.press(Key.tab)
        keyboard.release(Key.tab)
        time.sleep(1)
        keyboard.type('password')
        time.sleep(0.5)
        keyboard.press(Key.enter)
        keyboard.release(Key.enter)
        Run = False

    elif choice != "1" and choice != "2" and choice != "3":
        print("Invalid answer")

  

Комментарии:

1. С какой именно проблемой вы столкнулись?

Ответ №1:

Вы можете попробовать использовать функцию скриншота pyautogui, а затем попытаться найти, где находится ваш значок на картинке.

 import pyautogui
import PIL
import numpy as np
img=PIL.Image.open("mygameicon.png")
screen=pyautogui.screenshot()
def find_loc(img,screen):
    img=np.asarray(img)
    screen=np.asarray(screen)
    img_size_y=img.shape[0]
    img_size_x=img.shape[1]
    for y1 in range(screen.shape[0]):
        for x1 in range(screen.shape[1]):
            if (screen[y1:y1 img_size_y,x1:x1 img_size_x] == img).all():
                return (x1,y1,x1 img_size_x,y1 img_size_y)

loc=find_loc(img,screen)
...

  

Я не знаю наверняка, но я думаю, что вы могли бы вместо этого использовать сопоставление шаблонов opencv для учета небольших ошибок на изображениях. Также вы должны использовать формат без потерь, такой как png, вместо jpeg, поскольку значения пикселей могут измениться.