2012-03-21 10 views
16

मैं कोड लिखने का प्रयास कर रहा हूं जो प्रत्येक आइटम को उपयोगकर्ता की विंडोज मीडिया प्लेयर लाइब्रेरी से पढ़ता है। यह कोड अधिकांश उपयोगकर्ताओं के लिए काम करता है, लेकिन कुछ उपयोगकर्ताओं के लिए, 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 के साथ मेरा आवेदन जहाजों। कुछ उपयोगकर्ताओं की मशीनों को इस तरह से कॉन्फ़िगर किया जाएगा कि वे अपनी लाइब्रेरी में कई गाने के साथ विंडोज मीडिया प्लेयर चलाते हैं, लेकिन WMPLib सही तरीके से कार्य करने में विफल रहता है? इसके अलावा, सभी मामलों में उपयोगकर्ता की विंडोज मीडिया प्लेयर लाइब्रेरी को विश्वसनीय रूप से पढ़ने के लिए क्या कामकाज मौजूद हैं?

+2

यदि आपके पास परीक्षण करने के लिए मशीन तक पहुंच है, तो आपको 'सेटिंग्स.mediaAccessRights' से क्या मूल्य मिलता है? –

+0

WMPLib सही ढंग से कार्य करने में विफल रहता है ?, क्या मैं विफलता पोस्ट करने के लिए अनुरोध कर सकता हूं? – Soundararajan

+0

सामान्य इंटरऑप पुस्तकालयों में डीएलएल के एक संस्करण के लिए विशिष्ट हैं, और अगर अंतर्निहित COM डीएल में कुछ बदलता है, तो आपको उचित इंटरऑप डीएलएल होना होगा। क्या आपको पता है कि डब्लूएमपी ... डीएलएल समान है और सभी विंडोज़ के संस्करणों में संगत है। WIndows 7 N श्रृंखला जैसी कुछ विंडो डिफ़ॉल्ट रूप से विंडोज मीडिया प्लेयर के साथ शिप नहीं होंगे। साथ ही उन लोगों से कॉन्फ़िगरेशन प्राप्त करना एक अच्छा विचार है जो विफलताओं की रिपोर्ट करते हैं और उनसे तथ्यों को खोजने का प्रयास करते हैं – 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

संबंधित मुद्दे