2009-08-06 13 views
3

j'ai ajouté ce codeComment puis-je attraper des événements itunes?

 iTunes.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(iTunes_OnPlayerPlayingTrackChangedEvent); 

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

à mes thats app programmées en C#, mais ce ne est pas attraper lorsque les changements de la chanson. Est-ce que je manque quelque chose?

Y a-t-il un autre moyen d'attraper l'événement modifié par piste iTunes?

Répondre

1

J'ai trouvé un moyen de le faire fonctionner.

d'abord tout ce que j'ajouté une minuterie

Ensuite, chaque 1 seconde, il vérifie

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 
} 

c'est tout :)

+0

vous aurez également besoin d'ajouter un autre si à celui de consulter la météo l'artiste est le même et l'album est différent. et la météo de l'artiste est différent et l'album est le même et peut-être plus pour répondre à vos besoins – user112884

+0

Je viens de me battre avec la même chose. Quand iTunes a été chargé, j'ai eu mon msgbox disant que la piste avait été changée ... mais si je ferme l'application et rouvre, il ne m'avertit pas. C'est comme si la connexion était fermée ... même un test de base n'a pas fonctionné. J'ai mis en place une minuterie comme vous l'avez suggéré et maintenant cela fonctionne parfaitement. Merci :) –

1

Vous devez utiliser "ou" non "et". Dans votre code, il ne rapportera que si l'artiste et l'album et le nom de chanson changent. Est-ce que c'est ce que tu veux? (parce que si je joue une autre chanson dans le même album, l'interface utilisateur ne sera pas mise à jour).

+0

Votre droit "ou" fonctionne mieux! Merci! – user112884

5

En réalité, vous vous êtes abonné au mauvais événement pour saisir cette information.

Voici un extrait de code qui vous donnera ce que vous voulez:

 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; 

    }