Я вижу, что вы решили свою проблему через обсуждение и узнали о свойстве frontmost
для application
объектов.
Так что это больше интересно для завершения того, что вы изначально начали.
@vadian был прав, заявив:
Аргумент tell application должен быть (буквальной) константой, поскольку терминология оценивается во время компиляции.
Решение этой проблемы состоит в том, чтобы не использовать терминологию. Терминология требует, чтобы инструктируемое приложение могло искать термины, используемые в его словаре сценариев, и преобразовывать их из удобных для человека терминов в необработанные коды событий 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
Естественно, без поиска по словарю свойства приложения и их значения возвращаются в чистом синтаксисе.
Примечание. Ввод необработанных синтаксических кодов в Редактор скриптов может быть немного сложным, так как он сразу же скомпилируется и все термины, которые понимает либо Редактор скриптов или AppleScript (например, properties
, который обычно используется повсеместно и с одним и тем же кодом типа). Но вы можете создать AppleScript в любом текстовом редакторе. Если вам действительно нужно скомпилировать его в файл .scpt
, то osacompile
сделает это.
person
CJK
schedule
10.07.2020