2009-08-06 27 views
3

我已經加入此代碼我如何捕捉iTunes活動?

 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跟蹤改變的事件?

回答

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 
} 

就是這樣:)

+0

你還需要增加一個否則,如果該查詢天氣的藝術家是相同的,這張專輯是不同的。 和天氣的藝術家是不同的和專輯是相同的 也許更符合您的需求 – user112884 2009-08-07 03:53:42

+0

我剛剛一直在努力與此相同的事情。當iTunes加載時,我得到我的msgbox表示該曲目已被更改...但如果我關閉該應用程序並重新打開,它不會提醒我。這就像連接已經關閉......即使是基本的測試也不行。按照您的建議,我已經實現了一個計時器,現在它完美地工作。謝謝:) – 2010-05-05 15:43:47

1

您應該使用 「或」,而不是 「和」。在你的代碼中,它只會報告藝術家和專輯以及歌曲名稱是否改變。那是你要的嗎? (因爲如果我在同一專輯中播放另一首歌曲,用戶界面將不會更新)。

+0

你的權利「或」確實效果更好!謝謝! – user112884 2009-08-17 11:29:00

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; 

    }