@Renat871

Как привязать нажатия кнопок к окну?

Как можно привязать симуляцию нажатия кнопок клавиатури или миши к окну на python?
Пробовал через AHK, но там разве что можно дать окну фокус и кликнуть куда надо.
это возможно через скрипт в GUI AHK, но возможно ли через питон?
  • Вопрос задан
  • 379 просмотров
Пригласить эксперта
Ответы на вопрос 1
YaPA24
@YaPA24
IT эксперт
Делал автокликер для игры, вот относительно универсальное простое решение.
Чтобы не мучится в начале выскакивает окошко - тащишь его чтобы было над нужным окном и жми "ОК", далее скрипт копает и подбирает даже в неактивном окне...

import threading, time
import win32api, win32con, win32gui
import pyautogui as pag
import keyboard as kb
import tkinter as tk

def get_window_at_mouse_pos():
    x, y = win32api.GetCursorPos()
    window_id = win32gui.WindowFromPoint((x, y))
    return window_id

def send_key(key_code, window_handle):
#    win32api.SendMessage(window_handle, win32con.WM_CHAR, key_code, 0)
#    win32api.PostMessage(window_handle, win32con.WM_CHAR, key_code, 0)
    pag.press(chr(key_code))
    print(key_code)

def mining():
    while True:
        time.sleep(1)
        while is_e.get() == 1:
            send_key(ord('e'), window_handle)
            time.sleep(3)
            send_key(ord('q'), window_handle)
            time.sleep(65)

root = tk.Tk()
canvas1 = tk.Canvas(root, width=300, height=200, bg='lightsteelblue2', relief='raised')
canvas1.pack()

is_e = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Капать", variable=is_e, font=('helvetica', 18))
canvas1.create_window(150, 160, window=checkbox)

win32gui.MessageBox(None, 'start', 'Message Box', 0)
window_handle = get_window_at_mouse_pos()
print(window_handle)
win32gui.SetForegroundWindow(window_handle) # hwnd
threading.Thread(target=mining, daemon=True).start()

root.mainloop()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы