2011-03-17 77 views
0

我附上我的代码到目前为止,我的问题是所有的播放列表返回“auto”或“wpl”为他们的类型。 (这是所有使用WMPLib参考)如何判断播放列表是否是c#中的音乐播放列表?

mediaplayer = new WindowsMediaPlayer(); 
// Init. Playlists 
IWMPPlaylistCollection plcollection = mediaplayer.playlistCollection; 
plarray = plcollection.getAll(); 
int i = 0, count = plarray.count; 
string[] t = new string[count]; 

// Here is where I want to sort out non-music playlists 
// And add them to the ListBox 
for (i = 0; i < count - 1; i++) 
    t[i] = plarray.Item(i).getItemInfo("PlaylistType"); 

for (i = 0; i < count; i++) 
    PlaylistBox.Items.Add("" + plarray.Item(i).name); 

无关,但如果你知道如何安装播放列表的数据,而不是字符串,将是有益的太:)

+1

你期望每个返回?另外,播放列表不限于单个媒体类型。 – 2011-03-17 00:36:47

+0

我正在制作音乐播放器,所以我需要确保播放列表中只有音乐。这不可能吗? – 2011-03-17 01:07:55

回答

1

我想你可以通过播放列表循环项目,如果项目的“MediaType”属性等于“音频”,则认为该列表是包含音频文件的列表。水木清华这样的:

private bool ListHasAudio(IWMPPlaylist playList) 
{ 
    if (playList != null && playList.count > 0) 
    { 
     for (int n = 0; n < playList.count; n++) 
     { 
      IWMPMedia media = playList.get_Item(n); 
      string mediaType = media.getItemInfo("MediaType"); 
      if (mediaType != null && mediaType.Equals("audio", StringComparison.CurrentCultureIgnoreCase)) 
       return true; 
     } 
    } 
    return false; 
} 

这里是你如何使用它:

var mediaplayer = new WindowsMediaPlayer(); 
// Init. Playlists 
IWMPPlaylistCollection plcollection = mediaplayer.playlistCollection; 
var plarray = plcollection.getAll(); 
// Load list box items 
for (int i = 0; i < plarray.count; i++) 
{ 
    IWMPPlaylist playList = plarray.Item(i); 
    if (ListHasAudio(playList)) 
     PlaylistBox.Items.Add(playList.name); 
} 

希望这会有所帮助,至于

+0

没想到我不得不迭代列表,但这是有道理的。感谢您的回答,我已更新您的代码以反映我的答案,但仍然是好东西! – 2011-03-19 22:46:20