2012-03-21 4 views
16

사용자의 Windows Media Player 라이브러리에서 각 항목을 읽는 코드를 작성하려고합니다. 이 코드는 대다수의 사용자에게 적합하지만 일부 사용자의 경우 Windows Media Player 라이브러리에 수백 또는 수천 개의 항목이있는 경우 getAll()은 빈 목록을 반환합니다.WMPLib : player.mediaCollection.getAll(). 개수는 항상 0입니다.

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 라이브러리를 안정적으로 읽을 수있는 해결 방법은 무엇입니까?

+2

테스트 할 기계에 대한 액세스 권한이있는 경우 'Settings.mediaAccessRights'에서 어떤 이점을 얻을 수 있습니까? –

+0

WMPLib가 제대로 작동하지 않습니까? 실패를 게시하도록 요청할 수 있습니까? – Soundararajan

+0

일반적으로 Interop 라이브러리는 DLL 버전에만 해당되며 기본 COM DLL에서 변경된 사항이 있으면 적절한 Interop DLL이 있어야합니다. WMP ... dll이 동일하고 모든 Windows 버전에서 호환되는지 알고 있습니까? Windows 7 N 시리즈와 같은 일부 창은 기본적으로 Windows Media Player와 함께 제공되지 않습니다. 실패를보고하고 사실을 찾으려는 사람들로부터 구성을 얻는 것도 좋은 생각입니다. – Soundararajan

답변

1

이 스 니펫을 시도해보고 효과가 있는지 확인하십시오.

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

관련 문제