-
Автор темы
- #1
Делаю бота для игры. Сделал основную логику. Теперь интересует вопрос о его фоновой работе.
Нужно чтобы бот посылал различные ивенты в окно игры, не разворачивая его.
Нашел код и немного преобразовал его:
На блокноте работает. Когда я пытаюсь провернуть все тоже самое с окном игры - никакой реакции. Но если окно игры развернуто - он кликает мышью/пишет букву, и то, только в чате самой игры.
Дочернего окна у игры нет. Только основное (ну либо они спрятаны, я в этом не силён)
Возможно тк это DirectX игра, он принимает только непосредственное нажатие с клавиатуры.
А вот клики и нажатия на уровне системы не выполняются.
Есть у кого-то идеи или познания в этом?
UPDATE: Вопрос решил сам. Тему можно не удалять, вдруг кому код понадобится.
Нужно чтобы бот посылал различные ивенты в окно игры, не разворачивая его.
Нашел код и немного преобразовал его:
Python:
import win32gui
import win32api
import win32con
import time
def click(x,y):
hWnd = win32gui.FindWindow("Notepad", None) # Получает хендл окна
hwndChild = win32gui.GetWindow(hWnd, win32con.GW_CHILD) # Получает хендл дочернего окна
lParam = win32api.MAKELONG(x, y) # Задает координаты клика
time.sleep(0.3)
# Кликает по координатам
win32api.PostMessage(hwndChild, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, lParam)
win32api.PostMessage(hwndChild, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, lParam)
time.sleep(0.3)
# Пишет нужную букву
temp = win32api.SendMessage(hwndChild, win32con.WM_CHAR, 0x44, 0)
click(100,100)
Дочернего окна у игры нет. Только основное (ну либо они спрятаны, я в этом не силён)
Возможно тк это DirectX игра, он принимает только непосредственное нажатие с клавиатуры.
А вот клики и нажатия на уровне системы не выполняются.
Есть у кого-то идеи или познания в этом?
UPDATE: Вопрос решил сам. Тему можно не удалять, вдруг кому код понадобится.
Последнее редактирование: