Я вижу, что вы решили свою проблему в ходе обсуждения и узнали о свойстве frontmost
для application
объектов.
Так что это больше представляет интерес для завершения того, что вы начали.
@ vadian был правильным, заявив:
Аргумент приложения tell должен быть (буквальной) константой, поскольку терминология оценивается во время компиляции .
Решение этой проблемы - не использовать терминологию. Терминология требует, чтобы проинструктированное приложение могло искать терминологию, используемую в его словаре сценариев, и преобразовывать их из понятных человеку терминов в необработанные коды событий Apple. Так что уберите среднего человека, и вы можете выдавать операторы, отдавать команды и получать свойства с помощью синтаксиса сырого шеврона:
on run argv
set [appName] to argv
tell the application named appName ¬
to return its «class pALL»
end run
Затем в терминале:
osascript ~/Scripts/getAppProperties.applescript "Brave Browser"
«class ChBB»:«class CrBF» id 1, frontmost:false, «class ChOB»:«class CrBF» id 2,
class:application, name:Brave Browser, version:83.1.10.97
Естественно, без поиска в словаре, специфичные для приложения свойства c и их значения возвращаются в исходном синтаксисе.
Примечание: Ввод необработанных кодов синтаксиса в Script Редактор может быть немного сложным, так как он немедленно скомпилирует и любые термины, понятные либо Script Editor , либо AppleScript (например, properties
, который обычно доступен для всех и имеет одинаковые код типа). Но вы можете создать AppleScript в любом текстовом редакторе. Если вам действительно нужно скомпилировать его в файл .scpt
, то osacompile
сделает это.