Имитация клика в определённой позиции в свёрнутом окне Python
Возможна ли имитация клика в определённой позиции в свёрнутом окне, к примеру у меня есть игра в которой нужно нажать на элемент находящийся по определённым координатам не разворачивая игру.
это скрипт для скриншотов
import win32gui
import win32ui
from ctypes import windll
from PIL import Image
def screenshot():
hwnd = win32gui.FindWindow(None, 'SС')
left, top, right, bot = win32gui.GetWindowRect(hwnd)
w = right - left
h = bot - top
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
saveDC.SelectObject(saveBitMap)
windll.user32.PrintWindow(hwnd, saveDC.GetSafeHdc(), 3)
bmpinfo = saveBitMap.GetInfo()
bmpstr = saveBitMap.GetBitmapBits(True)
im = Image.frombuffer(
'RGB',
(bmpinfo['bmWidth'], bmpinfo['bmHeight']),
bmpstr, 'raw', 'BGRX', 0, 1)
win32gui.DeleteObject(saveBitMap.GetHandle())
saveDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.ReleaseDC(hwnd, hwndDC)
im.save("SC_Scr/SC_main.jpeg")
это скрипт для кликов
import ctypes
from SC_Screenshoter import screenshot
MOUSEEVENTF_LEFTDOWN = 0x0002
MOUSEEVENTF_LEFTUP = 0x0004
WM_LBUTTONDOWN = 0x0201
WM_LBUTTONUP = 0x0202
WM_KEYUP = 0x0100
BACKSPACE_VIRTUAL_CODE = 0x08
def click():
ctypes.windll.user32.SendMessageW(
window_handle, WM_LBUTTONDOWN, MOUSEEVENTF_LEFTDOWN, 0)
ctypes.windll.user32.SendMessageW(
window_handle, WM_LBUTTONUP, MOUSEEVENTF_LEFTUP, 0)
screenshot()
window_handle = ctypes.windll.user32.FindWindowW(None, 'SC')
click()
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
lParam = win32api.MAKELONG(x, y)
#Вместо SendMessage можно использовать PostMessage, тогда сообщение поставится в очередь и не будет ждать пока окно обработает нажатие/смещение курсора.
win32api.SendMessage(hwnd, win32con.WM_MOUSEMOVE, 0, lParam)