Может ли AppleScript выбрать дополнительное меню стороннего приложения?

2

Многие сторонние приложения имеют небольшие значки меню в правом верхнем углу строки меню, такие как Evernote, iStat, Parallels Desktop и так далее. Я пытался написать некоторые AppleScripts для нажмите эти значки меню, но все не удалось ,

Возьмите «ПД», например:

tell application "System Events"
    tell process "Parallels Desktop"
        get properties of every menu bar item of every menu bar
    end tell
end tell

Я могу получить несколько пунктов меню, таких как «Apple», «Parallels Desktop», «Файл», «Редактировать», ..., «Справка», которые, очевидно, являются верхними левыми меню PD. Кроме того, дополнительное меню также получается и описывается следующим образом:

{минимальное значение: пропущенное значение, ориентация: пропущенное значение, позиция: {1338, 0}, класс: элемент строки меню, описание доступности: "", описание роли: "дополнительное меню", фокус: ложь, заголовок: пропущенное значение, размер : {30, 22}, help: "", все содержимое: {}, включено: true, максимальное значение: пропущено значение, роль: "AXMenuBarItem", значение: пропущено значение, подчиненная роль: "AXMenuExtra", выбрано: false, имя : отсутствует значение, описание: ""}

После проверки позиции инспектором специальных возможностей я могу подтвердить, что это дополнительное меню является значком меню, который я хочу щелкнуть. Тогда я пишу это:

tell application "System Events"
    tell process "Parallels Desktop"
        click menu bar item 1 of menu bar 2
    end tell
end tell 

или замените выражение "click" на:

perform action "AXPress" of menu bar item 1 of menu bar 2

или с:

perform action "AXShowMenu" of menu bar item 1 of menu bar 2

Все приведенные выше коды возвращают один и тот же результат: недостающее значение и никакие меню не появляются вообще!

Что касается элементов пользовательского интерфейса системы, таких как «ввод текста», «дата и время», «wifi», «батарея», «VPN», метод щелчка работает. НО для сторонних приложений, это не работает.

Итак, как выбрать сторонние меню через AppleScript?

Огромное спасибо!!

bo zhao
источник
Я обнаружил, что некоторые сторонние приложения, особенно те, в которых есть выпадающее меню, не подходят для сценариев. Я слышал об одном трюке с использованием Automator и его пункта меню watch-me-do «Рабочий процесс меню> Запись [Shift-Cmd-R]», который возвращает некоторые «значки действий», которые затем можно вставить в ScriptEditor. Мне удалось записать несколько щелчков на значке меню Avira, которые можно «повторить» из Automator, но НЕ «воспроизвести», если они будут вставлены одинаково в окно ScriptEditor. По крайней мере, вы можете получить точное описание вашего «значка меню» с помощью этой процедуры, или, возможно, использовать приложение Automator в конце ....
clemsam lang

Ответы:

-2

У меня была проблема с тем, что AppleScript нажимал на дополнительное меню iTeleport Connect, пока не попробовал следующее:

tell application "System Events" to tell process "iTeleport Connect"
tell (menu bar item 1 of menu bar 2)
    click --  This click appears to be the important addition that allows you to drill down to the other items
    click menu item "Connect" of menu 1
end tell
end tell
AskAnotherWay
источник
ОП явно уже попробовал это и заявил, что это не работает.
user3439894
Добавление одного "щелчка" заставляет его работать. :-)
AskAnotherWay
Неважно, что вы написали это по-разному, поскольку оба выполняют событие как tell application "System Events" to click menu bar item 1 of menu bar 2 of process "ProcessName"!
user3439894