如何使用AppleScript检查粘贴到剪贴板的值

时间:2010-09-21 02:51:17

标签: macos applescript

我是AppleScript的菜鸟,我真的想用它做点好事。如何制作始终运行的AppleScript检查剪贴板更改?我想要做的是检查剪贴板,查看它是否是某个值,并使用该剪贴板值发出Web请求。

这是我目前拥有的,它只是获取当前剪贴板中的值

get the clipboard
set the clipboard to "my text"

任何帮助都将非常感激。提前谢谢。

1 个答案:

答案 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