2009-08-06 11 views
3

Ich habe diesen Code hinzugefügtWie finde ich Itunes Events?

 iTunes.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(iTunes_OnPlayerPlayingTrackChangedEvent); 

und diesen Code

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

meine app, das ist in C# programmiert, aber sein Fang nicht, wenn der Song ändert. Fehle ich etwas?

Gibt es eine andere Möglichkeit, iTunes Track geändert Ereignis zu erfassen?

Antwort

1

Ich habe einen Weg gefunden, damit es funktioniert.

Zunächst einmal habe ich eine Timer

Dann alle 1 Sekunde überprüft er

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 
} 

, dass es :)

+0

Sie müssen auch ein anderes hinzufügen, wenn zu, dass der Künstler Wetter zu überprüfen, die gleiche ist und das Album ist anders. und Wetter der Künstler ist anders und das Album ist das gleiche und vielleicht mehr, um Ihre Bedürfnisse – user112884

+0

Ich habe gerade mit dieser gleichen Sache zu kämpfen. Als iTunes geladen wurde, bekam ich meine msgbox, dass der Track geändert wurde ... aber wenn ich die App schließe und sie wieder öffne, warnt sie mich nicht. Es ist so, als ob die Verbindung geschlossen wurde ... selbst ein Basistest hat nicht funktioniert. Ich habe einen Timer wie Sie vorgeschlagen implementiert und jetzt funktioniert das perfekt. Danke :) –

1

Sie sollten "oder" verwenden, nicht "und". In deinem Code wird nur angezeigt, wenn sich der Künstler und das Album und der Songname ändern. Ist es das was du willst? (Wenn ich ein anderes Lied im selben Album spiele, wird die Benutzeroberfläche nicht aktualisiert).

+0

Dein Recht "oder" funktioniert besser! Vielen Dank! – user112884

5

Sie abonnieren tatsächlich das falsche Ereignis, um diese Informationen zu erfassen.

ist hier ein Code-Schnipsel, die Sie geben, was Sie wollen:

 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; 

    }