2012-10-11 19 views
5

जब आप "कंप्यूटर" देखते हैं तो विंडोज 7 में प्रत्येक ड्राइव के लिए बहुत अच्छे आइकन होते हैं। यह सीडी, एसडी कार्ड, यूएसबी लाठी, USB हार्ड ड्राइव, आदिविंडोज एक्सप्लोरर में इस्तेमाल किए गए ड्राइव आइकन कैसे प्राप्त करें?

लिए सही आइकन डालता है यह इस तरह दिखता है:

Driving

मैं उन माउस का उपयोग करें और सही लोगों का उपयोग करना चाहेंगे मेरे यूआई में मैंने फ़ोल्डर आइकन और फ़ाइल आइकन तक पहुंचने के विभिन्न तरीकों का प्रयास किया है, लेकिन कुछ भी काम नहीं करता है। क्या काम नहीं करता है:

  • Icon.ExtractAssociatedIcon ('एफ: \ ")

  • SHGetFileInfo (' एफ: \", 0, रेफरी shinfo, (uint) Marshal.SizeOf (shinfo) , Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);

  • ShellObject.FromParsingName ('एफ: \ ")। थंबनेल

और क्या मैं कोशिश कर सकते हैं, या मैं गलत क्या कर रहा हूँ?

संपादित करें: मैं आइकन के स्रोत की तलाश नहीं कर रहा हूं, मैं प्रत्येक ड्राइव के लिए सही आइकन प्राप्त करने का प्रयास कर रहा हूं।

+0

जब आप कहते हैं कि आपके समाधान काम नहीं करते हैं, तो वे वास्तव में कौन से आइकन लौटते हैं? – SirDarius

+0

निकालेंएसिओटेड Icon और ShellObject अपवाद फेंक क्योंकि ड्राइव एक फ़ाइल नहीं है। SHGetFileInfo एक कम रेज जेनेरिक आइकन देता है, न कि प्रत्येक ड्राइव के लिए विशिष्ट आइकन। – Sugrue

उत्तर

3

खुदाई का एक बहुत बाद (विजुअल स्टूडियो 2005 के लिए exampel), मैंने पाया : http://tabbles.net/blog/how-to-have-large-file-icons-with-shgetfileinfo-in-c/

मुद्दा यह है कि SHGetFileInfo को छोटे, पूर्व-एक्सपी, शैली आइकन 16x16 मिल सकते हैं, लेकिन बड़े आधुनिक विस्टा और विन 7 'जंबो' आइकन प्राप्त करने के लिए, जो 256x256 तक हैं, आपको अधिक जटिल बहु का उपयोग करने की आवश्यकता है -स्टेप विधि। लिंक कोड प्रदान करता है।

0

मेरा मानना ​​है कि वे यहाँ में एम्बेडेड रहे हैं:

%SystemRoot%\system32\SHELL32.dll 
+1

धन्यवाद, लेकिन मुझे कैसे पता चलेगा कि प्रत्येक ड्राइव के लिए किस का उपयोग करना है? – Sugrue

2

आपको सावधान वाले आइकन आप उपयोग के बाद से उनमें से एक बहुत कुछ लाइसेंस प्राप्त नहीं किया जा सकता है किया जाना चाहिए। लेकिन क्या आप वाकई तहत

सी हैं जिन्हें आप पाते हैं का उपयोग करने की अनुमति है: \ Program Files (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 10.0 \ Common7 \ VS2010ImageLibrary \ 1033 \ VS2010ImageLibrary.zip (विजुअल स्टूडियो 2010 के लिए उदाहरण)

या

c: इस \ Program Files (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 8 \ Common7 \ VS2005ImageLibrary \ VS2005ImageLibrary.zip

+0

धन्यवाद। मुझे लगता है कि मेरा असली सवाल यह है कि प्रत्येक ड्राइव के लिए किस आइकन का उपयोग करना है? – Sugrue