Как проверить значение, вставленное в буфер обмена с AppleScript - PullRequest
0 голосов
/ 21 сентября 2010

Я новичок AppleScript, и я действительно хочу сделать что-то хорошее с этим. Как я могу сделать AppleScript, который работает постоянно, проверяя изменения буфера обмена? Я хочу проверить буфер обмена, посмотреть, является ли оно определенным значением, и сделать веб-запрос с этим значением буфера обмена.

Это то, что у меня сейчас есть, просто получает значение, которое находится в текущем буфере обмена

get the clipboard
set the clipboard to "my text"

Любая помощь будет принята с благодарностью. Заранее спасибо.

1 Ответ

3 голосов
/ 21 сентября 2010

В 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 для периодической работы.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...