我添加了以下代码
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 track changed事件?
发布于 2009-08-07 03:51:50
我想出了一个让它工作的方法。
首先,我添加了一个计时器
然后每隔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
}就是这样:)
发布于 2010-01-09 02:05:18
您实际上订阅了错误的事件来捕获此信息。
下面是一个代码片段,它将提供您想要的内容:
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;
}发布于 2009-08-16 16:12:46
你应该使用"or",而不是"and“。在您的代码中,它将仅在艺术家、专辑和歌曲名称发生更改时进行报告。这是你想要的吗?(因为如果我播放同一张专辑中的另一首歌曲,UI不会更新)。
https://stackoverflow.com/questions/1236869
复制相似问题