如何使用 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 cliclick
或 brew install mousetools
,可以使用 Homebrew 安装 cliclick 和 MouseTools。
因此,我尝试使用测试脚本测试 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 cliclick
或 brew install mousetools
,可以使用 Homebrew 安装 cliclick 和 MouseTools。