Applescript: Скажите по дилемме переменной - PullRequest
0 голосов
/ 06 января 2011

Я хотел бы сделать это:

tell application "Finder" to set appName to (application file id "com.google.Chrome") as text
using terms from application appName
    tell application appName to get URL of active tab of first window
end using terms from

Это не работает, потому что "использование терминов из" требует имени приложения в качестве строковой константы.Если я подставлю эту строку:

using terms from application appName

на эту

using terms from application "Google Chrome"

, это сработает.Однако я не хочу полагаться на целевую машину, имеющую приложение под названием «Google Chrome».Использование идентификаторов пакета кажется более безопасным.Есть ли лучший способ сделать это?

Редактировать

Следуя совету @ regulus6633, я попробовал следующее:

NSAppleScript* script = [[NSAppleScript alloc] initWithSource:
    @"tell application \"Finder\" to set appName to (application file id \"com.google.Chrome\") as text"
    @"\nusing terms from application \"Google Chrome\""
    @"\ntell application appName to get URL of active tab of first window"
    @"\nend using terms from"];

Что работает нормально, но если я запускаюто же самое (скомпилированное) приложение на другом компьютере, где «Google Chrome» переименован в «Chrome», я получаю всплывающее диалоговое окно с вопросом, где находится «Google Chrome».Кажется, что NSAppleScript компилируется во время выполнения?

1 Ответ

2 голосов
/ 06 января 2011

Вы не понимаете, что делает "использование терминов из".Это способ для вас скомпилировать скрипт на вашем компьютере с помощью приложения, а затем не делать перекомпиляцию скрипта на компьютере пользователя.Другими словами, когда вы компилируете на своем компьютере эту строку кода, эта строка кода ничего не делает на компьютере пользователя, и, таким образом, пользователю не нужно приложение, которое вы использовали для компиляции сценария ... так что эта строкаименно то, что вы ищете.Обязательно сохраните ваш скрипт как «приложение», чтобы его не нужно было перекомпилировать на компьютере пользователя.

Вот как вы на самом деле хотите, чтобы ваш код выглядел:

-- here you determine what the user's browser is
set usersBrowser to "whatever"

using terms from application "Google Chrome"
    tell application usersBrowser
        -- here you do something in the user's browser
        -- you have to make sure that whatever command you use is applicable to both google chrome and whatever browser the user is using i.e. the command must work in both browsers
    end tell
end using terms from
...