如何让Apple Script仅在指定显示器范围内执行点击操作?
AppleScript 实现第二显示器应用点击的操作步骤
默认点击仅在主显示器生效的核心原因是:macOS 全局坐标以主显示器左上角为(0,0)原点,第二显示器的所有坐标都是基于该原点的偏移值,直接传递应用内相对坐标会被定位到主显示器对应位置。
具体实现步骤
第一步:获取所有显示器的边界参数,确认第二显示器的坐标偏移
执行以下代码获取所有显示器的边界数组,数组第一个元素为主显示器参数,第二个为第二显示器参数,单条参数格式为{左边界值, 上边界值, 右边界值, 下边界值}tell application "System Events" to set displayBoundsList to bounds of every desktop -- 提取第二显示器的左上角偏移坐标 set secondDisplayLeft to item 1 of item 2 of displayBoundsList set secondDisplayTop to item 2 of item 2 of displayBoundsList第二步:确认目标应用处于第二显示器(可选,用于校验)
-- 替换为你的目标应用名称,如"Google Chrome"、"Pages" set targetApp to "你的目标应用名称" tell application targetApp set appWindowBounds to bounds of front window -- 可判断窗口左边界是否等于第二显示器左边界,确认应用在第二屏 if (item 1 of appWindowBounds) is equal to secondDisplayLeft then log "应用已在第二显示器" end if end tell第三步:坐标转换与点击执行
你在应用窗口内测得的相对坐标(如窗口左上角向右100px、向下200px的位置为{100, 200}),需要叠加第二显示器的偏移值得到全局坐标,再执行点击:-- 替换为你需要点击的应用内相对坐标 set relativeX to 100 set relativeY to 200 -- 计算全局坐标 set globalX to secondDisplayLeft + relativeX set globalY to secondDisplayTop + relativeY -- 激活目标应用后执行点击 tell application targetApp to activate delay 0.2 -- 等待应用激活完成,可按需调整时长 tell application "System Events" click at {globalX, globalY} end tell
注意事项
- 运行脚本前必须开启对应执行程序的辅助功能权限:打开「系统设置 > 隐私与安全性 > 辅助功能」,勾选「脚本编辑器」或者你打包后的脚本应用
- 如果第二显示器摆放在主显示器的左侧、上方或下方,无需手动调整坐标计算逻辑,系统返回的
displayBoundsList参数已自动适配对应偏移 - 如果需要连续点击,每次点击之间可加
delay 0.1避免操作过快被系统拦截
内容的提问来源于stack exchange,提问作者OpenMind
相关产品推荐
相关产品推荐

