मैंने एक ऐसा ऐप्लिकेशन बनाया है जो आपको आपके कंप्यूटर में फ़ाइलों की एक सूची प्रस्तुत करता है। जब भी आप सूची में किसी भी आइटम पर क्लिक करते हैं, तो उसके बगल में एक छोटा पिक्चरबॉक्स संबंधित फाइल के थंबनेल को दिखाना चाहिए। मैं विंडोज 7 पर सी # का उपयोग कर रहा हूं।थंबनेल एक्सेस करना जो मौजूद नहीं है
थंबनेल प्राप्त करने के लिए, मैंने एक अलग प्रश्न में पोस्ट की गई विधि को दोबारा शुरू कर दिया है। सबसे पहले, मैं विंडोज एपीआई कोड पैक का संदर्भ देता हूं। फिर, मैं निम्नलिखित कोड का उपयोग करता हूं:
ShellFile shellFile = ShellFile.FromFilePath(fullPathToFile);
myPictureBox.Image = shellFile.Thumbnail.LargeBitmap;
यह हमेशा काम नहीं करता है। कभी-कभी, दिखाया गया थंबनेल केवल 'डिफ़ॉल्ट एप्लिकेशन' आइकन होता है। मुझे पता चला है कि असली थंबनेल केवल तभी दिखाया गया है जब विंडोज ने पहले उस फ़ाइल के लिए थंबनेल जेनरेट किया था और इसे थंबनेल कैश में संग्रहीत किया था। इसका मतलब है कि मुझे मैन्युअल रूप से एक फ़ोल्डर खोलना है, प्रत्येक फ़ाइल के लिए विंडोज़ थंबनेल जेनरेट करने के लिए प्रतीक्षा करें, और फिर मेरा आवेदन उन अंगूठे को देख पाएगा।
मेरा प्रोग्राम विंडोज 7 को वास्तविक थंबनेल उत्पन्न करने से पहले कैसे उपयोग कर सकता है?
ShellFile shellFile = ShellFile.FromFilePath(fullPathToFile);
shellFile.Thumbnail.FormatOption = ShellThumbnailFormatOption.ThumbnailOnly;
myPictureBox.Image = shellFile.Thumbnail.LargeBitmap;
हालांकि, मैं हो रही है मामले थंबनेल में एक अपवाद वहाँ अभी तक नहीं है::
अद्यतन (Li0liQ द्वारा)
यह FormatOption जोड़कर थंबनेल पुनः प्राप्ति के लिए मजबूर करने के लिए संभव है
वर्तमान शैल ऑब्जेक्ट में वैध थंबनेल हैंडलर नहीं है या थंबनेल निकालने में कोई समस्या थी इस विशिष्ट शैल ऑब्जेक्ट के लिए। ---> System.Runtime.InteropServices.COMException: कक्षा पंजीकृत नहीं (HRESULT से अपवाद: 0x80040154 (REGDB_E_CLASSNOTREG))
How do I refresh a file's thumbnail in Windows Explorer? सवाल और संभावित सुराग के लिए कोड snippet देखें।
li0liq, आपके त्रुटि संदेश यह नहीं कहते हैं कि थंबनेल अभी तक नहीं है, यह कह रहा है कि थंबनेल उत्पन्न करने के लिए कोई हैंडलर नहीं है। –