2009-02-24 7 views
5

क्या मैं प्रक्रिया को प्रभावित कर सकता हूं?
मेरे पास .NET 3.5/VS2008 में बनाया गया एक एप्लिकेशन है। मैंने Win32.res फ़ाइल के साथ ऐप में एकाधिक आइकन एम्बेड किए हैं। यह VS2008 में प्रोजेक्ट के लिए प्रॉपर्टी बॉक्स में किया जाता है - एक .ico फ़ाइल निर्दिष्ट करने के बजाय, .res फ़ाइल निर्दिष्ट करने के लिए बॉक्स को चेक करें। .res फ़ाइल में आपके पास एकाधिक आइकन हो सकते हैं। मेरा मतलब है कि here देखें।Vista मेरे एप्लिकेशन से जुड़े दस्तावेज़ों के लिए आइकन कैसे उत्पन्न करता है?

प्रत्येक आइकन में 256x256xRGB (पीएनजी cmopressed) "Vista ग्रेड" छवि, एक 256x256x32bit छवि, और विभिन्न रंग combos में 48x48, 32x32, और 16x16 छवियों की सामान्य कैस्केड शामिल है। यदि मैं एक्सप्लोरर में परिणामी एक्सई देखता हूं, तो मुझे बड़ी सुंदर 256x256 Vista छवियां दिखाई देती हैं।

मैं फिर राइट क्लिक> "इसके साथ खोलें ..."> Vista Vista के एक्सप्लोरर में डिफ़ॉल्ट प्रोग्राम क्लिकस्ट्रीम सेट करके, मेरे ऐप में एक फ़ाइल एक्सटेंशन संबद्ध कर सकता हूं। लेकिन दस्तावेज़ के बगल में प्रदर्शित आइकन तब ऐप आइकन का एक छोटा संस्करण है, जो एक गुना कोने के साथ कागज की एक सफेद शीट की तरह दिखता है।

परिणाम यह है कि मूल छवि "छोटे आइकन" संस्करण में दिखाए जाने पर छोटे दिखने के लिए कम है। यह भयानक लग रहा है।

मुझे पता है कि कागज़ के तले हुए टुकड़े को पूरी तरह से छोड़ना संभव है, या कम से कम उस पर अधिक बड़ी छवि प्राप्त करने के लिए संभव है। उदाहरण के लिए, सी # फ़ाइल के लिए आइकन पेपर की एक शीट शीट है, लेकिन सी # प्रतीक बड़ा और दृश्यमान है। मैं यह कैसे प्राप्त कर सकता हूं? WinZip 12 स्थापित होने पर .zip फ़ाइलों के लिए आइकन, बड़ा और दृश्यमान है, और इसमें कागज़ की कोई गुना शीट नहीं है।

क्या आइकन के लिए आइकन आइकन के लिए आइकन से अलग है? क्या मेरे ऐप में कुछ ऐसा है जो मुझे एक आइकन पंजीकृत करने के लिए करना है जो Vista मेरे ऐप से जुड़े दस्तावेज़ों के लिए उपयोग करेगा?

उत्तर

13

फ़ाइल एक्सटेंशन के लिए आइकन और फ़ाइल एसोसिएशन रजिस्ट्री में सूचीबद्ध हैं। अधिक विशेष रूप से, HKEY_CLASSES_ROOT\.ext प्रविष्टियों में सामग्री प्रकार, माना गया प्रकार और (Default) मान वास्तविक सहयोग है। उदाहरण के लिए, .cs फ़ाइलों के पास VisualStudio.cs.9.0 का डिफ़ॉल्ट मान है (मुझे वीएस 2008 मिला है)। आप इस फ़ाइल प्रकार से जुड़े वास्तविक आइकन, प्रोग्राम और कमांड देखने के लिए HKEY_CLASSES_ROOT\VisualStudio.cs.9.0 देख सकते हैं। विशेष रूप से, HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon वह प्रविष्टि है जो एक्सप्लोरर को बताती है कि इस प्रकार की फ़ाइलों के लिए कौन सा आइकन दिखाना है। यह उस बाइनरी में एक बाइनरी और संसाधन आईडी को इंगित करता है।

जब आप किसी फ़ाइल प्रकार को राइट क्लिक -> ओपन विथ ... के माध्यम से किसी प्रोग्राम के साथ जोड़ते हैं, तो आप एक डिफ़ॉल्ट आइकन निर्दिष्ट नहीं करते हैं, इसलिए एक्सप्लोरर आपके ऐप का आइकन लेता है और इसे सामान्य दस्तावेज़ आइकन पर ओवरले करता है ।

सही दृष्टिकोण आपके सेटअप के हिस्से के रूप में फ़ाइल प्रकार को आपके एप्लिकेशन और आपके आइकन से संबद्ध करने के लिए उपयुक्त रजिस्ट्री प्रविष्टियों के रूप में शामिल करना होगा। आपको शामिल करने के लिए आवश्यक सटीक रजिस्ट्री मान उस फ़ाइल प्रकार के संदर्भ मेनू में जोड़े गए आदेशों पर निर्भर करते हैं, लेकिन कम से कम आप ओपन कमांड चाहते हैं। .cs फ़ाइलों के मामले में, आप देख सकते हैं कि HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open(Default) वैल्यू है जिसमें ओपन कमांड लागू होने पर शुरू करने के लिए एप्लिकेशन शामिल है। (अब आप के लिए ddeexec हिस्सा अनदेखा कर सकते हैं)

ध्यान रखें कि HKEY_CLASSES_ROOT दो रजिस्ट्री शाखाओं का एक मैप किए गए दृश्य है रखें: HKEY_CURRENT_USER\Software\Classes और HKEY_LOCAL_MACHINE\Software\Classes। यदि आप चाहते हैं कि आपकी फाइल एसोसिएशन सभी उपयोगकर्ताओं के लिए हो, तो आपको HKEY_LOCAL_MACHINE पर लिखना होगा। ऐसा करने के लिए आपके सेटअप को व्यवस्थापक के रूप में चलाने की आवश्यकता है। अन्यथा, HKEY_CLASSES_ROOT पर लिखने का प्रयास या तो पहुंच से वंचित हो जाएगा या HKEY_CURRENT_USER पर लिखें और केवल वर्तमान उपयोगकर्ता के लिए सहयोग करें।(दोनों में से कौन सा होगा, ओएस क्या है, चाहे उपयोगकर्ता क्या है, लेकिन उन्नत नहीं है)

आप एमएसडीएन पर Customizing File Types (Files Associations) अनुभाग में यह सब पढ़ सकते हैं। विशेष रूप से, File Types और Registering Programs with Client Programs आपको मूल बातें प्रदान करेगा कि यह वास्तव में कैसे करें।

+0

वाह! बहुत बढ़िया जवाब। उत्तम! मुझे इसकी ही खोज थी! – Cheeso

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