2011-03-17 111 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