3

私はこのコードを追加しました

        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 トラック変更イベントをキャッチする他の方法はありますか?

4

3 に答える 3

5

この情報を取得するために、実際には間違ったイベントをサブスクライブしています。

必要なものを提供するコードスニペットを次に示します。

        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;

    }
于 2010-01-08T18:05:18.487 に答える
1

私はそれを機能させる方法を考え出しました。

まず、タイマーを追加しました

その後、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
}

それでおしまい :)

于 2009-08-07T03:51:50.053 に答える
1

「and」ではなく「or」を使用する必要があります。あなたのコードでは、アーティストとアルバムと曲名が変更された場合にのみ報告されます。それはあなたが望むものですか?(同じアルバム内の別の曲を再生すると、UI が更新されないため)。

于 2009-08-16T16:12:45.833 に答える