2009-08-06 5 views
3

전 C#하지만이 때 노래 변경을 잡기하지에 프로그램 내 응용 프로그램 먹으 렴이 코드어떻게 아이튠즈 이벤트를 잡을까요?

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

을 추가했습니다. 내가 누락 되었습니까?

iTunes 트랙 변경 이벤트를 수신하는 다른 방법이 있습니까?

답변

1

나는 그것을 작동시키는 방법을 찾아 냈습니다. 모든

먼저 나는 그런 다음 1 초는 그것 뿐이다 :)

+0

당신도 작가가 동일하며 앨범이 다른 날씨를 확인하는 것과 경우 다른 사람을 추가해야합니다. 날씨가 예술가가 다르다 & 앨범이 동일합니다 그리고 어쩌면 더 당신의 필요에 맞게 – user112884

+0

나는이 똑같은 일로 고심하고 있습니다. iTunes가로드되었을 때, 트랙이 변경되었다는 것을 msgbox에 표시했습니다 ...하지만 앱을 닫았다가 다시 열면 경고 메시지가 나옵니다. 그것은 연결이 닫힌 것처럼 ... 심지어 기본 테스트가 작동하지 않았다. 내가 제안한 타이머를 구현했으며 이제는 완벽하게 작동합니다. 감사합니다 :) –

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 
} 

이 확인 타이머를

을 추가했다. 코드에서 아티스트, 앨범 및 노래 이름이 변경된 경우에만보고합니다. 너가 원하는게 그거야? (왜냐하면 같은 앨범에서 다른 곡을 재생하면 UI가 업데이트되지 않기 때문입니다).

+0

당신의 오른쪽 "또는"더 잘 작동합니다! 감사! – user112884

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; 

    } 
관련 문제