Виберіть пункт меню в AppleScript, не використовуючи "Події системи" в 10.9 Mavericks


15

Я щойно відповідав на інше запитання і мені нагадали про нову «особливість» у Mavericks.

У мене було декілька маленьких Automator Services, які не брали вводу, але зробили щось корисне, прив'язавшись до натискання клавіші. Ідеальним прикладом було виведення Терміналу на фронт. Деякі з них вимагають вибору пункту меню в додатку, винесеному на фронт, наприклад Bring All to Front.

Тепер, здається, потрібно надати "доступність" кожному додатку, щоб універсальний набір клавіш спрацював, якщо Сервіс використовує System Eventsбібліотеку AppleScript.

Хтось знає виправлення для цього?


2
Смішний той факт, що доступність має бути дозволена індивідуально за програмою. Їм потрібна настройка, подібна до Allow applicationsфункції.
l'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 доступності, перетягнувши їх до списку в системних налаштуваннях:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.