如何使用 AppleScript 单击屏幕?

How can you click the Screen using AppleScript?

因此,我尝试使用测试脚本测试 click at 命令,但我收到了错误 -25200,我到处查看,我不明白为什么会收到此错误。

property mousex : 1
property mousey : 1
property screenx: 2559
property screeny: 1599

tell application "System Events"



    repeat 100 times
         click at {mousex mod screenx, mousey mod screeny}
         set mousex to mousex + 100
         set mousey to mousey + 100
         delay 0.2
     end repeat

end tell
end run

在这种情况下使用 click at 不是正确的方法。 MouseTools 之类的东西更适合您的需求。正确的做法是:

property screenX : 1439
property screenY : 899

repeat with mousePos from 1 to 100
    do shell script "/usr/local/bin/mousetools -x " & ((mousePos * 100) mod screenX) & " -y " & ((mousePos * 100) mod screenY) & " -leftClick"
    delay 0.1
end repeat
end run

请注意,我做了一些更改:我不认为让两个变量始终具有完全相同的值是有效的,所以我将它们都更改为 mousePos。但是如您所见,没有 set mousePos to mousePos + 100,而是我使用了 repeat with。 Repeat with 每次循环都会自动将变量加一,所以我不得不添加 * 100。此外,使用 MouseTools 时 screenX 和 screenY 值会发生变化,您可以通过 运行 此脚本并将鼠标移动到右下角来获取屏幕大小:

repeat 10 times
    set mousePos to do shell script "/usr/local/bin/mousetools -location"
    display notification mousePos
    delay 1
end repeat

运行 此代码在 Affinity Photo 中的最终结果,与 Photoshop 类似的产品,我看到您打算将其用于:


以上代码已在 13 英寸 MacBook Air 2019 的 macOS 11.4 Beta 中测试


编辑:正如 user3439894 所说:

There is also: cliclick

我决定重写脚本以使用 cliclick,因为 cliclick 看起来更现代也更快:

property screenX : 1439
property screenY : 899
repeat with mousePos from 1 to 100
    do shell script "/usr/local/bin/cliclick c:" & ((mousePos * 100) mod screenX) & "," & ((mousePos * 100) mod screenY)
    delay 0.1
end repeat
end run

这与上述脚本的工作方式完全相同。如您所见,屏幕尺寸仍然与使用 MouseTools 时相同,仍然不知道为什么会这样。如果你想通过点击获取位置,使用这个脚本:

repeat 10 times
    set mousePos to do shell script "/usr/local/bin/cliclick p:."
    display notification mousePos
    delay 1
end repeat

以上代码已在 13 英寸 MacBook Air 2019 的 macOS 11.4 Beta 中测试


通过在终端中键入命令 brew install cliclickbrew install mousetools,可以使用 Homebrew 安装 cliclick 和 MouseTools。