Как получить свойства приложения - PullRequest
0 голосов
/ 10 июля 2020

Я хочу получить properties приложения (имя указывается как аргумент командной строки). В основном я хочу знать, является ли аргумент application_name в командной строке самым передним или нет.

Это то, что я делал (у меня это работает)

tell application "Google Chrome"
    get properties
end tell

Но когда я пытаюсь сделать это:

on run argv
  tell application (item 1 of argv)
    get properties
  end tell
end run

Я получаю сообщение об ошибке при выполнении с помощью команды osascript has_focus.scpt "Google Chrome"

environment / mac / scripts / has_focus.scpt : 56: 66: ошибка выполнения: Google Chrome получил ошибку: не удалось получить все свойства. (-1728)

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 10 июля 2020

Это не может работать.

Аргумент tell application должен быть (буквальной) константой, потому что терминология оценивается во время компиляции.

Исключением являются свойства version, frontmost и running, которые получает любое приложение. Эти свойства внутренне организованы как объект приложения и не зависят от существующего словаря AppleScript.

1 голос
/ 10 июля 2020

Я вижу, что вы решили свою проблему в ходе обсуждения и узнали о свойстве 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 сделает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...