Можно ли наблюдать за событиями из других приложений на OS X? - PullRequest
2 голосов
/ 15 мая 2011

По сути, мне нужно знать, когда кто-то нажимает на игру в iTunes.Я понимаю, как управлять iTunes с помощью Apple Scripting Bridge, но я не могу заставить iTunes управлять моим приложением.Возможно ли это?

Спасибо!

1 Ответ

7 голосов
/ 15 мая 2011

В общем, невозможно выяснить, что другие приложения делают с событиями, нет.Также невозможно узнать, когда нажата кнопка воспроизведения в iTunes.Даже если бы вы поймали событие отключения мыши, вам нужно было бы каким-то образом выяснить, находилась ли кнопка воспроизведения iTunes под ней в то время.

Однако в этом случае вы можете зарегистрироваться дляуведомления, которые iTunes публикует, когда начинается воспроизведение трека.Дейв Делонг изложил это в другом ответе здесь, на SO.

// Register for notifications, perhaps in awakeFromNib
NSDistributedNotificationCenter *dnc = [NSDistributedNotificationCenter defaultCenter];
[dnc addObserver:self 
        selector:@selector(iTunesTrackDidChange:) 
            name:@"com.apple.iTunes.playerInfo" 
          object:nil];

- (void)iTunesTrackDidChange:(NSNotification *)note {
    NSLog(@"%@", [note userInfo]);
}

Это не дает вам всего, на что вы можете надеяться; Распределенные уведомления стоят дорого, поэтому iTunes с ними экономен.Вы получаете уведомление, когда начинается воспроизведение трека, и все;нет остановки, нет громкости, нет различия между прыжками и началом игры с остановки.Однако в уведомлении содержится достаточно информации о самой дорожке: почти все метаданные iTunes и некоторые сведения о файлах.

Надеюсь, это полезно!

...