首页 > 解决方案 > Python仅在活动窗口中单击坐标

问题描述

我想在某个点上单击鼠标按钮,但只能在活动窗口中单击。
假设我的活动窗口大小为 720x1280,我想单击(520, 1080)此窗口中的点。我该怎么做?
我只设法点击了这一点,但它是屏幕上的点,而不是活动窗口中的点。
我的代码是:

def click(x, y):
    win32api.SetCursorPos((x, y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)

我一无所知,我对诸如 win32 库(con、api 等)之类的东西不太熟悉

标签: pythonpython-3.xwinapiclickcursor-position

解决方案


共有三个坐标:屏幕坐标、活动窗口坐标和活动窗口的客户区坐标。

如果要单击与活动窗口具有相对位置 ( (720-520), (1280-1080)) 的点,则首先使用 检索指定窗口的边界矩形的尺寸GetWindowRect。(尺寸以屏幕坐标给出。)然后加上上面的偏移量(200, 200)。

如果要单击与活动窗口的客户区具有相对位置 ( 200, 200) 的点,则首先使用 检索窗口客户区的坐标GetClientRect。然后加上上面的偏移量(200, 200)。由于SetCursorPos使用屏幕坐标,因此您需要将活动窗口客户区的坐标转换为屏幕坐标,使用ClientToScreen.

最后,mouse_event功能已被取代。改为使用SendInput


推荐阅读