Wybierz pozycję menu w AppleScript bez używania „Zdarzenia systemowe” w 10.9 Mavericks

15

Właśnie odpowiadałem na inne pytanie i przypomniałem sobie o nowej „funkcji” w Mavericks.

Kiedyś miałem kilka małych Automator Services, które nie pobierały żadnych danych wejściowych, ale zrobiły coś pożytecznego, gdy były powiązane z naciśnięciem klawisza. Idealnym przykładem było przeniesienie terminala na przód. Niektóre z nich wymagały wybrania pozycji menu w aplikacji umieszczonej z przodu, np Bring All to Front.

Teraz wydaje się, że musisz przyznać „dostęp” każdej aplikacji, aby uniwersalne naciśnięcie klawisza działało, jeśli usługa korzysta z System Eventsbiblioteki AppleScript.

Czy ktoś wie, jak to naprawić?

Tony Williams
źródło
2
To, że Dostępność musi być autoryzowana indywidualnie dla każdej aplikacji, jest śmieszne. Potrzebują ustawienia podobnego do tej Allow applicationsfunkcji.
l'L'L
1
Potrzebują sposobu autoryzacji biblioteki AppleScript „Zdarzenia systemowe”, która wydaje polecenie, a nie aplikacji działającej podczas aktywacji usługi. Ale to jest śmieszne.
Tony Williams

Odpowiedzi:

25

Nie wiem, jak klikać elementy menu bez użycia zdarzeń systemowych, ale jeśli inni znajdą się tutaj, szukając sposobu klikania elementów menu za pomocą zdarzeń systemowych:

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

Możesz zezwolić wszystkim obecnie zainstalowanym aplikacjom na korzystanie z interfejsu API dostępności, przeciągając je na listę w Preferencjach systemowych:

Lri
źródło