首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WMPLib: player.mediaCollection.getAll().count始终为0

WMPLib: player.mediaCollection.getAll().count始终为0
EN

Stack Overflow用户
提问于 2012-03-22 04:01:07
回答 1查看 2.7K关注 0票数 16

我正在尝试编写从用户的Windows Media Player库中读取每个项目的代码。此代码适用于大多数用户,但对于某些用户,当他们的Windows Media Player库中显然有成百上千个项目时,getAll()将返回一个空列表。

代码语言:javascript
复制
var player = new WindowsMediaPlayer();
var collection = player.mediaCollection;
var list = collection.getAll();
int total = list.count;

我通过向wmp.dll添加COM引用来引用WMPLib命名空间。我的应用程序附带了Interop.WMPLib.dll。如何配置一些用户的机器,使他们在运行Windows Media Player时库中有许多歌曲,但WMPLib无法正常运行?此外,有什么解决方法可以在所有情况下可靠地读取用户的Windows Media Player库?

EN

回答 1

Stack Overflow用户

发布于 2012-06-06 19:40:01

尝试这个代码片段,看看它是否适用于您。

代码语言:javascript
复制
public List<MusicEntry> GetMusicLibrary()
{ 
  List<MusicEntry> entries; 
  IWMPPlaylist mediaList = null; 
  IWMPMedia mediaItem; 

  try
  { 
    // get the full audio media list 
    mediaList = media.getByAttribute("MediaType", "Audio"); 
    entries = new List<MusicEntry>(mediaList.count); 

    for (int i = 0; i < mediaList.count; i++) 
    {
      mediaItem = mediaList.get_Item(i);

      // create the new entry and populate its properties
      entry = new MusicEntry() 
      { 
        Title = GetTitle(mediaItem), 
        Album = GetAlbum(mediaItem), 
        Artist = GetArtist(mediaItem), 
        TrackNumber = GetTrackNumber(mediaItem), 
        Rating = GetRating(mediaItem), 
        FileType = GetFileType(mediaItem) 
      }; 

      entries.Add(entry); 
    } 
  } 
  finally 
  { 
    // make sure we clean up as this is COM 
    if (mediaList != null) 
    {
      mediaList.clear(); 
    } 
  } 

  return entries;
}

有关更多信息,请参阅这篇关于代码项目的优秀文章。http://www.codeproject.com/Articles/36338/Export-Windows-Media-Player-Music-Metadata-to-XML

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9811968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档