我是AppleScript的菜鸟,我真的想用它做点好事。如何制作始终运行的AppleScript检查剪贴板更改?我想要做的是检查剪贴板,查看它是否是某个值,并使用该剪贴板值发出Web请求。
这是我目前拥有的,它只是获取当前剪贴板中的值
get the clipboard
set the clipboard to "my text"
任何帮助都将非常感激。提前谢谢。
答案 0 :(得分:3)
AppleScript无法“等待剪贴板更改”,因此您必须定期“轮询”剪贴板。
repeat
循环暂停set oldvalue to missing value
repeat
set newValue to the clipboard
if oldvalue is not equal to newValue then
try
if newValue starts with "http://" then
tell application "Safari" to make new document with properties {URL:newValue}
end if
end try
set oldvalue to newValue
end if
delay 5
end repeat
有些人可能会使用do shell script "sleep 5"
代替delay 5
;我从未遇到delay
的问题,但我从未在像这样的长期运行程序中使用它。
根据用于运行此程序的启动程序,这样的脚本可能会“绑定”应用程序并阻止它启动其他程序(某些启动程序一次只能运行一个AppleScript程序)。
使用idle
处理程序的更好的选择是将程序保存为“保持打开”应用程序(在“另存为...”对话框中),并使用idle
handler进行定期工作。
property oldvalue : missing value
on idle
local newValue
set newValue to the clipboard
if oldvalue is not equal to newValue then
try
if newValue starts with "http://" then
tell application "Safari" to make new document with properties {URL:newValue}
end if
end try
set oldvalue to newValue
end if
return 5 -- run the idle handler again in 5 seconds
end idle