WMPLib: player.mediaCollection.getAll (). Count всегда равен 0 - PullRequest
16 голосов
/ 22 марта 2012

Я пытаюсь написать код, который читает каждый элемент из пользовательской библиотеки Windows Media Player. Этот код работает для большинства пользователей, но для некоторых пользователей getAll() вернет пустой список, когда у них явно есть сотни или тысячи элементов в библиотеке проигрывателя Windows Media.

var player = new WindowsMediaPlayer();
var collection = player.mediaCollection;
var list = collection.getAll();
int total = list.count;

Я ссылаюсь на пространство имен WMPLib, добавляя COM-ссылку на wmp.dll. Мое приложение поставляется с Interop.WMPLib.dll. Как машины некоторых пользователей будут настроены таким образом, чтобы они запускали Windows Media Player со многими песнями в своей библиотеке, но WMPLib не работает правильно? Кроме того, какие существуют обходные пути для надежного чтения пользовательской библиотеки проигрывателя Windows Media во всех случаях?

1 Ответ

1 голос
/ 06 июня 2012

Попробуйте этот фрагмент и посмотрите, работает ли он для вас.

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;
}

Для получения дополнительной информации обратитесь к этой превосходной статье о Code Project.http://www.codeproject.com/Articles/36338/Export-Windows-Media-Player-Music-Metadata-to-XML

...