Как выбрать конкретное окно приложения с помощью сценария Apple?

#macos #scripting #applescript

Вопрос:

У меня Logic Pro X работает на нескольких мониторах. Логика может открывать сразу несколько окон, в которых выполняются разные вещи, которые у меня есть на каждом мониторе. Я пытаюсь написать сценарий apple, чтобы «включить слияние исправлений» в окне логики на моем втором мониторе. Код, который я должен для этого сделать, выглядит следующим образом:

 ignoring application responses
    tell application "System Events" to ¬
        perform action "AXPress" of ¬
            pop up button 1 of group 1 of group 2 of ¬
            window 1 of application process "Logic Pro X"
end ignoring

delay 0.1
do shell script "killall 'System Events'"
delay 0.2

tell application "System Events"
    run
    delay 0.2
    tell application process "Logic Pro X"
        perform action "AXPress" of ¬
            menu item "Enable Patch Merging" of ¬
            menu 1 of pop up button 1 of ¬
            group 1 of group 2 of window 1
        perform action "AXPress" of ¬
            checkbox "Sends" of ¬
            group 1 of group 1 of group 2 of window 1
        perform action "AXPress" of ¬
            checkbox "Audio Effects" of ¬
            group 1 of group 1 of group 2 of window 1
    end tell
end tell
 

Однако это работает только в том случае, если у меня выбрано это второе окно на моем втором дисплее. Обычно у меня на основном дисплее выбрано Логическое окно. Когда я запускаю сценарий apple с любым другим выбранным окном, я получаю эту ошибку:

Системные события получили ошибку: не удается получить группу 2 окна 1 процесса приложения «Logic Pro X». Неверный индекс.

Как я могу заставить скрипт выбрать соответствующее логическое окно перед выполнением этой задачи? Мне кажется, что это единственный обходной путь. Спасибо!

Комментарии:

1.До того самого дня я не прикасался про логику и скачал триал , чтобы ответить на ваш другой вопрос, А почему я сказал «появилась только одна логика про окно открыл.». — Я не знаю, является ли это ограничение в суде, но это позволяет только один проект должен быть открыт в то время, хотя он может иметь несколько окон одного проекта. Проблемы , как я их вижу: 1. Logic Pro sans renderPreview , единственный элемент в словаре AppleScript и некоторые базовые команды ванильного AppleScript , например quit , это не продолжение сценария AppleScript

2.Продолжай… если только вы не используете сценарии пользовательского интерфейса с системными событиями и процессом их применения. — 2. Свойства его окон не раскрывают id свойство, что затрудняет различение одного окна от другого. — 3. Сценарии пользовательского интерфейса сложны, подвержены сбоям по ряду причин, и их действительно следует избегать, если только нет другого способа достичь цели. Например, при двух открытых окнах group 2 становится group 3 в другом окне. — 4. После дальнейшего изучения ситуации я не собираюсь больше тратить на это время, извините.

3. @user3439894 Да, ваша помощь по предыдущему вопросу была чрезвычайно полезна! Я заметил, что вы не ответили на мой комментарий, поэтому предположил, что вы, возможно, слишком заняты, так что не беспокойтесь вообще! Я понимаю дилемму-следовательно, почему мне было интересно, есть ли более простой способ командовать серией «щелчков» для нажатия на нужный второй монитор, чем с помощью сценариев пользовательского интерфейса. Я полагаю, однако, что это невозможно?

4. RE: «Я полагаю, однако, что это невозможно?» — Вообще говоря, это можно сделать. Взгляните на: cliclick

5. @user3439894 Черт возьми… Я все еще на OSX 10.14, так что, думаю, для меня этот вариант тоже не подходит. Очень жаль, что я, кажется, вообще не могу заставить это работать…