python - 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 等)之类的东西不太熟悉
解决方案
共有三个坐标:屏幕坐标、活动窗口坐标和活动窗口的客户区坐标。
如果要单击与活动窗口具有相对位置 ( (720-520)
, (1280-1080)
) 的点,则首先使用 检索指定窗口的边界矩形的尺寸GetWindowRect
。(尺寸以屏幕坐标给出。)然后加上上面的偏移量(200
, 200
)。
如果要单击与活动窗口的客户区具有相对位置 ( 200
, 200
) 的点,则首先使用 检索窗口客户区的坐标GetClientRect
。然后加上上面的偏移量(200
, 200
)。由于SetCursorPos
使用屏幕坐标,因此您需要将活动窗口客户区的坐标转换为屏幕坐标,使用ClientToScreen
.
最后,mouse_event
功能已被取代。改为使用SendInput
。
推荐阅读
- python - 每次重新运行时将scrapy导出为没有标题的csv
- android - Sqlite 的 sum() 函数在房间持久性库中似乎无法正常工作
- java - 将spring数据JpaSpecificationExecutor与分页和@Query结合起来
- javascript - 用于在 Google Data Studio 中操作数据的 Google App Script API
- python-3.x - 搜索所有引用的对象 id
- autodesk-forge - 使用 GPS 坐标将自定义对象放入查看器空间
- highcharts - Highcharts 大树图如何动态更改 allowDrillToNode 标志?
- sql - 如何修复 SQL 错误“将数据类型 varchar 转换为数字时出错”?
- django - 使用实例将数据保存到 Django 中的数据库的问题
- persistent-memory - 区分易失性和持久性变量,它会影响正确性吗?