【问题标题】:how do i catch itunes events?我如何捕捉 iTunes 事件?
【发布时间】:2009-08-06 03:46:38
【问题描述】:

我已添加此代码

        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 曲目更改事件吗?

【问题讨论】:

    标签: c# events com itunes-sdk


    【解决方案1】:

    您实际上订阅了错误的事件来捕获此信息。

    这里有一个代码 sn-p,它会给你你想要的:

            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;
    
        }
    

    【讨论】:

      【解决方案2】:

      你应该使用“或”,而不是“和”。在您的代码中,它只会报告艺术家和专辑以及歌曲名称是否发生变化。那是你要的吗? (因为如果我在同一张专辑中播放另一首歌曲,UI 不会更新)。

      【讨论】:

        【解决方案3】:

        我想出了一种方法来让它发挥作用。

        首先我添加了一个计时器

        然后每隔 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
        }
        

        就是这样:)

        【讨论】:

        • 您还需要添加一个 else if 来检查艺术家是否相同而专辑是否不同。和天气艺术家是不同的,专辑是一样的,也许更适合你的需要
        • 我一直在为同样的事情苦苦挣扎。当 iTunes 加载时,我的 msgbox 说曲目已更改......但如果我关闭应用程序并重新打开,它不会提醒我。就像连接已经关闭......即使是基本测试也不起作用。我已经按照你的建议实现了一个计时器,现在它工作得很好。谢谢:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多