Как мне переместить первого респондента с appleScript? - PullRequest
0 голосов
/ 07 июля 2010

Я хочу устранить следующую неприятность с iTunes: после того, как я искал дорожку (нажав cmd + opt + f, чтобы перейти к полю поиска), я хочу иметь возможность воспроизвести первую дорожку в списке песен.В идеале я бы хотел, чтобы cmd + enter начал воспроизведение первой дорожки в списке песен, а также переместил фокус на список песен.Например, я ввожу «Шоссе 61» в поле поиска, нажимаю cmd + enter, и начинает играть «Подобно Rolling Stone».

Моя первоначальная идея - это яблочный скрипт, который перемещает фокус с поля поиска наСписок песен, выбирает первую песню и воспроизводит ее.

Вот что у меня есть:

tell application "iTunes"
    set first responder of (window 1) to outline "songs"
end tell

Когда я пытаюсь запустить этот скрипт, Редактор Applescript выдает синтаксическую ошибку "Ожидается имя класса, найденный идентификатори подчеркивает responder.Этот сценарий имеет ту же форму, что и многие другие сценарии, которые я нашел в Интернете.Что я делаю не так?

В стороне / разглагольствования: Applescript - самая разочаровывающая и запутывающая технология, которую я когда-либо имел глупость навязывать себе.Я ненавижу это.Я ненавижу это.Я ненавижу это.Я ненавижу это.

Ответы [ 3 ]

3 голосов
/ 07 июля 2010

Синтаксис Applescript уникален, но это неплохо в том смысле, что у вас есть единый язык сценариев для GUI. Это было (и остается) нечто удивительное. Странный sytanx также не так уж странен, когда вы пройдете через определение языка Apple , которое можно найти здесь .

Тем не менее, вам нужно открыть словарь AppleScript каждого приложения, чтобы увидеть, какие типы существительных и глаголов определены. Думайте о приложении как о библиотеке классов и методов с точки зрения AppleScript. Конечно, вы не можете вызвать метод, который не определен в библиотеке, верно?

Запустите редактор AppleScript, выберите «Файл» → «Открыть словарь» и выберите iTunes. Вы скоро обнаружите, что нет такого существительного, как first responder определено.

Суть в том, что приложение обычно раскрывает только свою внутреннюю структуру объекта, а не каждый элемент интерфейса. Но обычно этого достаточно.

Если то, что вы хотите сделать, не может быть сделано с использованием надлежащего интерфейса Applescript, который приложение предоставляет в качестве крайней меры, вы можете напрямую манипулировать элементами пользовательского интерфейса, используя вспомогательное приложение под названием «Системные события».

Итак, снова зайдите в Файл → Открыть словарь, на этот раз выберите «Системные события» и проверьте содержимое «Процессов». Это позволяет вам манипулировать пользовательским интерфейсом. Например, чтобы получить список всех элементов пользовательского интерфейса, используйте

tell application "System Events"
   tell application process "iTunes"
            get UI elements of window 1
   end tell
end tell

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

Mac OS X Automation является отличным источником учебных пособий.

0 голосов
/ 10 июля 2010

AFAIK, iTunes не реализует команду set first responder of. Студия Applescript реализует такую ​​команду.

0 голосов
/ 08 июля 2010

Если я правильно понимаю, вам не нужен AppleScript для этого.Просто нажмите клавишу Tab, чтобы переместить фокус между элементами.В моем случае, например, нажатие клавиши Tab перемещает фокус с поля поиска на левую панель выбора, затем на основной список песен, а затем снова обратно на окно поиска.

РЕДАКТИРОВАТЬ Адресация к дальнейшему уточнениювопрос: вы можете перейти от поиска к игре двумя нажатиями клавиш - TAB, чтобы переместить фокус из поля поиска в список песен, затем SPACE, чтобы воспроизвести первую дорожку в выборе.Вы также можете использовать клавиши со стрелками, чтобы выбрать другой выбор.

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

tell application "iTunes"
    play first item of (search first library playlist for "Highway 61")
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...