Изменить iTunes нажмите, чтобы поставить в очередь вместо игры - PullRequest
3 голосов
/ 09 августа 2011

Я пытаюсь изменить работу iTunes, когда вы нажимаете песню или альбом. Я хочу перехватить щелчок и вместо того, чтобы воспроизвести этот элемент, я хочу, чтобы этот элемент был добавлен в определенный список воспроизведения. Я пытался перехватить событие нажатия, захватывая его из NSDistributedNotificationCenter, не давая ему распространяться и запускать сценарий Apple, который внесет дополнение в список воспроизведения. Проблема в том, что я не могу перехватить щелчок мышью в iTunes. Можете ли вы помочь мне с этим?

Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 12 августа 2011

Я думаю, что лучший способ сделать это - создать плагин SIMBL , который позволит вам получить доступ к iTunes (самому приложению), и оттуда вы сможете использовать методдействие, которое кнопка воспроизведения запускает для вашего собственного метода, который делает то, что вы хотите.

Я думаю, что из вашего метода вы бы выполнили сценарий Apple Script для добавления выбранного элемента в список воспроизведения.Вот еще немного информации о том, как сделать это с AppleScript: здесь и здесь .

Для получения дополнительной информации о SIMBL посетите веб-сайт , и если выВы не уверены, с чего начать. этот урок по созданию плагина SIMBL.

2 голосов
/ 15 августа 2011

Я нашел другой способ сделать это, используя NSDistributedNotificationCenter вместо перехвата клика.iTunes публикует распределенное уведомление при изменении состояния плеера, включая нажатие кнопки воспроизведения.

Вы можете подписаться на это уведомление под названием com.apple.iTunes.playerInfo, и когда вы получите его, вы сможете увидеть, находится ли состояние проигрывателя в статусе «Воспроизведение», и если вы знаете, что кнопка была нажата, вы можете запустить AppleScript для приостановки./ остановить воспроизведение музыки и делать то, что вы хотите (например, добавить выбранную песню в список воспроизведения).

В уведомлении также содержится много другой информации, которую вы можете увидеть здесь: enter image description here

Чтобы подписаться на уведомление, просто сделайте следующее и внедрите метод iTunesPlayerStateChanged:.

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(iTunesPlayerStateChanged:) name:@"com.apple.iTunes.playerInfo" object:nil];
1 голос
/ 13 августа 2011

Одним из способов будет отслеживание положения окна iTunes / кнопки воспроизведения с использованием API-интерфейсов специальных возможностей, а затем установка активного CGEventTap для перехвата щелчков мыши.Если щелчок попадает на кнопку iTunes, вы можете предотвратить распространение события в iTunes (возвращая NULL из вашего обратного вызова) и обработать его самостоятельно.

Основное преимущество этого по сравнению с SIMBLМетод заключается в том, что он не зависит от внутренней реализации в iTunes, поэтому должен продолжать работать, даже если iTunes обновляется и изменяет свои внутренние методы / функции.

...