Как программно нажать кнопку на панели инструментов с AppleScript? - PullRequest
3 голосов
/ 11 июня 2010

Надеюсь, это не слишком очевидно, но я бы хотел нажать одну из кнопок панели инструментов в приложении с помощью AppleScript.

Фон: кнопка не имеет какого-либо пункта менюСочетание клавиш.Таким образом, я не могу активировать его любым из этих методов;Мне нужно найти способ AppleScript фактически «нажать» кнопку.

Ответы [ 3 ]

3 голосов
/ 05 июля 2012

Я собираюсь немного рассказать о том, что сказал @hced.

Я согласен, что click button 3 of tool bar 1 of window 1 работает во многих случаях. Однако от ОС к ОС это может быть движущейся целью. Мой пример - iTunes. В iTunes 10.5.8 кнопка трансляции - 17, где в 10.7.5 - 25. Однако в обоих случаях он называется «AirPlay»!

Поэтому я предлагаю использовать комплект разработчика и получить этот код от Apple: http://developer.apple.com/library/mac/#samplecode/UIElementInspector/Introduction/Intro.html

Запустите приложение, и при наведении указателя мыши вы получите всю информацию, необходимую для этой работы в ваших скриптах AppleScripts:

click (every button whose description is "AirPlay") of window "iTunes" of application process "iTunes"

В этом случае должна быть только одна кнопка с этим описанием, но вы можете использовать инструмент, чтобы выяснить, так ли это. Если так, ограничьте область действия!

Надеюсь, это поможет! Bo

2 голосов
/ 11 июня 2010

Ах, я тоже это понял.Кажется, я здесь с комментариями.

Этот пример сработал для меня, ссылаясь на конкретную кнопку панели инструментов с помощью атрибута ее описания:

tell application "System Events"
    tell process "OmniFocus"
        click (every button whose description is "Contexts") of tool bar 1 of window 1
    end tell
end tell

Я оставлюдля любых комментаторов с мнением о ссылках на каждую кнопку с дескриптом «Контексты» (согласно моему примеру), чтобы выразить их ниже.Но я предполагаю, что не может быть нескольких кнопок с одинаковым описанием, верно?

1 голос
/ 11 июня 2010

Хорошо, это было проще, чем я думал, когда узнал, как. (Поиск в Google не сильно помог, но приложение под названием Prefab UI Browser помогло выяснить, как это делается)

Пример:

tell application "System Events"
    tell process "OmniFocus"
        click button 3 of tool bar 1 of window 1
    end tell
end tell

У меня есть дополнительный вопрос:

Как вы ссылаетесь на кнопку панели инструментов по имени / описанию? Я точно знаю, что кнопка имеет атрибут description со значением: «Контексты». Но опять же, как я могу ссылаться на него в операторе click?

...