Как я могу поймать события Itunes? - PullRequest
3 голосов
/ 06 августа 2009

я добавил этот код

        iTunes.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(iTunes_OnPlayerPlayingTrackChangedEvent);

и этот код

private void iTunes_OnPlayerPlayingTrackChangedEvent(object iTrack)
    {
        if (iTunes.CurrentTrack != null)
        {
            if (iTunes.CurrentTrack.Artist != null & iTunes.CurrentTrack.Album != null & iTunes.CurrentTrack.Name != null)
            {
                artist = iTunes.CurrentTrack.Artist;
                album = iTunes.CurrentTrack.Album;
                title = iTunes.CurrentTrack.Name;

                if (!NowPlaying.IsBusy)
                {
                    NowPlaying.RunWorkerAsync();
                }
            }
        }
    }

для моего приложения, которое запрограммировано в c #, но оно не перехватывает при изменении песни. Я что-то скучаю?

Есть ли другой способ отследить измененное событие в iTunes track?

Ответы [ 3 ]

5 голосов
/ 08 января 2010

Вы на самом деле подписываетесь на неправильное событие, чтобы получить эту информацию.

Вот фрагмент кода, который даст вам то, что вы хотите:

        iTunesApp app = new iTunesApp();

    public Form1()
    {
        InitializeComponent();
        app.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(app_OnPlayerPlayEvent);   
    }

    public void app_OnPlayerPlayEvent(object iTrack)
    {
        IITTrack currentTrack = (IITTrack)iTrack;
        string trackName = currentTrack.Name;
        string artist = currentTrack.Artist;
        string album = currentTrack.Album;

    }
1 голос
/ 16 августа 2009

Вы должны использовать «или», а не «и». В вашем коде он будет сообщать только об изменении исполнителя, альбома и названия песни. Это то, что вы хотите? (потому что, если я сыграю другую песню в том же альбоме, пользовательский интерфейс не будет обновляться).

1 голос
/ 07 августа 2009

Я нашел способ заставить его работать.

Прежде всего я добавил таймер

Затем каждую 1 секунду он проверяет

try 
{
if (iTunes.CurrentTrack.Artist != artist | iTunes.CurrentTrack.Album != album | iTunes.CurrentTrack.Name != title)
{
 //Code to update UI here
}
}
catch
{
//Nothing Here! this is just so your the app doesn't blow up if iTunes is busy. instead it will just try again in 1 second
}

вот и все:)

...