2009-12-11 28 views
23

मैं उलझन में हूं कि कॉपी और पेस्ट की कार्यक्षमता क्या लागू करती है। यह वही है जो मैं उलझन में हूं:स्वरूपित पाठ कार्य की प्रतिलिपि कैसे कॉपी करता है?

जब मैं एमएस वर्ड (जो एचटीएमएल की तुलना में एक अलग मार्कअप भाषा का उपयोग करता है) से स्वरूपित पाठ की प्रतिलिपि बनाता है और जीमेल या http://www.freerichtexteditor.com/index.php?inc=demo/index जैसे वेब ब्राउज़र में आरटीएफ संपादक में पेस्ट करता है तो स्वरूपण संरक्षित है लेकिन अब मार्कअप एचटीएमएल में परिवर्तित हो गया है। ये कैसे हुआ? रूपांतरण का क्या ख्याल रखा?

और यदि मैंने इस पाठ को किसी अन्य एप्लिकेशन में चिपकाया था, तो उसे उस प्रारूप में परिवर्तित कर दिया जाएगा। अगर मैंने कुछ एचटीएमएल पेज की प्रतिलिपि बनाई है और इसे शब्द में चिपकाया है तो HTML से शब्द में मार्कअप रूपांतरण होगा। फिर, कैसे?

फिर यदि मैं इस प्रतिलिपि स्वरूपित पाठ को नोटपैड जैसे टेक्स्ट एडिटर में पेस्ट करता हूं तो सभी स्वरूपण खो जाता है और मार्कअप बंद हो जाता है। किस एप्लिकेशन ने मार्कअप को तोड़ दिया और इसे सादे पाठ में बदल दिया?

जब मैं स्वरूपित पाठ की प्रतिलिपि बनाता हूं, तो क्लिपबोर्ड में वास्तव में क्या कॉपी किया जाता है? मैं एक .NET सी # प्रोग्रामर हूँ। मैं इसे कैसे प्रोग्राम करूं?

उत्तर

7

क्लिपबोर्ड पर डेटा FORMATETC रिकॉर्ड के साथ बढ़ाया है:

http://msdn.microsoft.com/en-us/library/ms682177%28VS.85%29.aspx

FORMATETC रिकॉर्ड पहले क्षेत्र के रूप में एक cfFormat सदस्य जो फ़ाइल स्वरूप का वर्णन होता है। cfFormatCF_UNICODETEXT या CF_BITMAP या परिभाषित एक निर्धारित परिभाषित प्रकार जैसे पूर्वनिर्धारित मान हो सकता है। माइक्रोसॉफ्ट वर्ड।

नेट में आप जाहिरा तौर पर Clipboard वस्तु क्वेरी कर सकता है पता लगाने के लिए जो डेटा स्वरूप यह शामिल हैं:

http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

विधि आप देख रहे हैं Clipboard.SetData है:

यदि आप करते हैं लक्ष्य एप्लिकेशन के प्रारूप को नहीं जानते, आप इस विधि का उपयोग कर डेटा को कई प्रारूपों में स्टोर कर सकते हैं।

इस विधि का उपयोग करके संग्रहीत डेटा को पुनर्प्राप्त किए जाने पर संगत प्रारूप में परिवर्तित किया जा सकता है।

एक विशेष प्रारूप में क्लिपबोर्ड से डेटा पुनः प्राप्त करने के लिए, पहले GetData विधि

के साथ पुन: प्राप्त करने के लिए अपने ठोस सवाल का जैसा कि पहले ContainsData विधि का उपयोग निर्धारित करने के लिए क्लिपबोर्ड उस प्रारूप में डेटा होता है कि क्या यह कैसे वर्ड में काम करता है, उपरोक्त लिंक आपको थोड़ा क्लिपबोर्ड दर्शक लिखने के लिए पर्याप्त जानकारी देनी चाहिए। चूंकि माइक्रोसॉफ्ट वर्ड एचटीएमएल फाइलों को आउटपुट करने में सक्षम है, मेरा अनुमान है कि वर्ड क्लिपबोर्ड पर डेटा को सरल टेक्स्ट, एचटीएमएल, आरटीएफ और वर्ड फॉर्मेट में लिखता है।

3

कुछ क्लिपबोर्ड दर्शकों है कि आप को देखने के लिए कौन-सा डेटा क्लिपबोर्ड में संग्रहीत किया जाता का उपयोग कर सकते (उदाहरण के लिए विन XP में clipbrd.exe) कर रहे हैं, इस व्यवहार क्योंकि स्रोत आवेदन या गंतव्य (जो वास्तव में आप क्लिपबोर्ड दर्शक द्वारा मिलेगा) समर्थित है है उस प्रकार का डेटा, और विनियमित तरीके से परिवर्तित किया गया।

+0

विंडोज 7 के लिए ऐसा कुछ भी? – claws

+0

clip.exe windowsbre.exe को Windows 7 –

+0

में बदल रहा है clip.exe एक कमांडलाइन उपयोगिता है। इसका उद्देश्य देखने के लिए नहीं है लेकिन कमांडलाइन से क्लिपबोर्ड पर कुछ भेजने के लिए है। डीआईआर की तरह | क्लिप; क्लिप claws

6

इस काम को करने के लिए दो चीजें होती हैं। सबसे पहले स्रोत एप्लिकेशन क्लिपबोर्ड पर डेटा को एकाधिक प्रारूपों में यदि संभव हो तो कॉपी करता है। उदाहरण के लिए यह एचटीएमएल, आरटीएफ, डीओसी, और सादे पाठ प्रारूपों की आपूर्ति कर सकता है। दूसरा गंतव्य एप्लिकेशन यदि संभव हो तो एकाधिक प्रारूपों से पेस्ट करने में सक्षम होने के लिए लिखा गया है। उदाहरण के लिए यह पहली बार आरटीएफ की तलाश कर सकता है और यदि यह उपलब्ध नहीं है तो यह सादा पाठ पेस्ट कर सकता है और यदि न तो उपलब्ध है तो यह बिल्कुल पेस्ट नहीं कर सकता है।

यह कुछ समय हो गया है क्योंकि मैंने क्लिपबोर्ड फ़ंक्शंस का उपयोग किया है, लेकिन अगर मुझे सही याद है कि स्रोत एप्लिकेशन के लिए यह इंगित करना संभव है कि यह वास्तव में क्लिपबोर्ड पर पूर्ण रूपांतरण और डेटा स्थानांतरण किए बिना कौन से प्रारूप प्रदान कर सकता है। वास्तविक रूपांतरण केवल तभी किया जाता है जब कुछ अन्य अनुप्रयोग वास्तव में क्लिपबोर्ड से डेटा को किसी विशिष्ट प्रारूप में अनुरोध करते हैं।

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