Выберите пункт меню в AppleScript, не используя «Системные события» в 10.9 Mavericks

15

Я просто отвечал на другой вопрос, и мне напомнили о новой «функции» в Mavericks.

Раньше у меня было несколько маленьких Automator Services, которые не принимали ввода, но делали что-то полезное, когда были связаны с нажатием клавиши. Прекрасным примером был один, чтобы вывести терминал на фронт. Некоторые из них требуют выбора пункта меню в приложении, например Bring All to Front.

Теперь кажется, что вам нужно предоставить «доступность» каждому приложению, чтобы универсальное нажатие клавиши работало, если служба использует System Eventsбиблиотеку AppleScript.

Кто-нибудь знает, как это исправить?

Тони Уильямс
источник
2
Тот факт, что доступность должна быть авторизована для каждого приложения, просто смешен. Им нужна настройка, очень похожая на Allow applicationsфункцию.
l'L'л
1
Ну, им нужен способ авторизации библиотеки AppleScript «Системные события», которая выдает команду, а не приложение, которое запускается при активации службы. Но это смешно.
Тони Уильямс

Ответы:

25

Я не знаю, как щелкать пункты меню без использования системных событий, но если другие попадают сюда в поисках того, как щелкать пункты меню с помощью системных событий:

tell application "System Events" to tell process "Finder"
    click menu item "New Finder Window" of menu 1 of menu bar item "File" of menu bar 1
end tell
tell application "System Events" to tell process "Finder"
    set frontmost to true
    click (menu item 1 where its name starts with "Compress") of menu 1 of menu bar item "File" of menu bar 1
end tell
tell application "System Events" to tell process "Finder"
    set frontmost to true
    tell menu bar item "File" of menu bar 1
        click
        click menu item "Open With" of menu 1
    end tell
end tell

Вы можете разрешить всем установленным в настоящее время приложениям использовать API специальных возможностей, перетащив их в список в Системных настройках:

LRI
источник