播放列表属性

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

播放列表具有称为属性的元数据信息,就像媒体项具有属性一样。 可以检索播放列表属性的名称和值并将其显示在用户界面中,或者代码可以根据特性的值执行操作。

播放列表在以 XML 格式组织的文件中定义,文件中的特定元素定义播放列表属性。 某些属性元素是众所周知的;图元文件的作者还可以定义任意属性。 有关播放列表文件中的属性元素的详细信息,请参阅 检索元数据

库可以提供其他播放列表属性,例如 SourceURLUserLastPlayedTime。 有关库播放列表属性的详细信息,请参阅Windows 媒体播放器属性参考

播放列表attributeCount 属性检索与播放列表关联的属性数。 播放列表attributeName 属性根据属性的索引和 Playlist 检索属性的名称。getItemInfo 方法根据属性的名称检索其值。

可以使用 播放列表修改当前播放列表的属性的值。setItemInfo 方法。

setItemInfo 方法的一个特殊用途是使用 SortAttribute 属性对播放列表中的项目进行排序。 以下 C# 示例按 UserLastPlayedTime 属性的值对播放列表进行排序。 变量 Playlist 是对 Playlist 对象的引用。

Playlist.setItemInfo("SortAttribute", "UserLastPlayedTime");

在本主题中, Player 对象按以下方式定义:

AxWMPLib.AxWindowsMediaPlayer Player;
using WMPLib;

以下 C# 示例代码演示如何检索播放列表属性。 第一个函数 ShowPlaylists 使用可用播放列表的名称填充 ListBox 控件。 第二部分是列表框事件处理程序。 当用户单击播放列表名称时,此代码将检索该播放列表的属性,并在第二个列表框中显示这些属性。

// Member variables
IWMPPlaylistCollection PlaylistColl;
IWMPPlaylistArray PlaylistArray;

private void ShowPlaylists()
{
    // Retrieve the playlist collection
    PlaylistColl = Player.playlistCollection;
    // Store the collection in a playlist array
    PlaylistArray = PlaylistColl.getAll();

    // Retrieve the count of elements
    iCount = PlaylistArray.count;

    // Update the list box with the playlist names.
    lstPlaylist.BeginUpdate();
    for (int i=0; i<iCount; i++)
    {
        lstPlaylist.Items.Add(PlaylistArray.Item(i).name);
    }
    lstPlaylist.EndUpdate();

    // Set the selected index to zero
    lstPlaylist.SelectedIndex = 0;
}

每次用户选择播放列表名称时,都会调用 ListBox 控件的 SelectedIndexChanged 事件。 以下事件处理程序使用与用户选择对应的属性名称和值填充第二个列表框。

private void lstPlaylist_SelectedIndexChanged(object sender, System.EventArgs e)
{
    IWMPPlaylist Playlist = PlaylistArray.Item(lstPlaylist.SelectedIndex);
    string strAttr="";
    string strItemNames="";
    int iAttribCount=0;

    iAttribCount = Playlist.attribCount;
    for (j=0; j<iAttribCount; j++)
    {
        strAttr=Playlist.get_attributeName(j) + " -- ";
        strAttr+=Playlist.getItemInfo(Playlist.get_attributeName(j));
        lstOutput.Items.Add(strAttr);
    }
}

管理播放列表

媒体项属性

Playlist 对象