2008-08-02 21 views
31

में काम करते समय COM नियंत्रण को अनलोड करें मेरे रोजमर्रा के काम का हिस्सा विरासत वीबी 6 अनुप्रयोगों को बनाए रखना और विस्तार करना है। सी/सी ++ में एक आम इंजन लिखा जाता है और प्रदर्शन सुधारने के लिए वीबी 6 इन कार्यों का उपयोग करता है।वीबी 6 आईडीई

जब एसिंक्रोनस प्रोग्रामिंग की बात आती है, तो एक सी इंटरफ़ेस पर्याप्त नहीं होता है और हम वीबी 6 पर ईवेंट को आग लगाने के लिए COM नियंत्रण पर भरोसा करते हैं।

मेरी समस्या यह है कि जब मैं वीबी 6 में नियंत्रण पंजीकृत करता हूं, तो वीबी इस नियंत्रण को स्मृति में लोड करता है और जब तक मैं वीबी 6 आईडीई छोड़ नहीं जाता तब तक इसे अनलोड नहीं करता है। चूंकि नियंत्रण पूरे समय लोड हो जाता है, इसलिए मैं इसे वीसी 6 में पुन: संकलित करने में असमर्थ हूं, क्योंकि डीएलएल फ़ाइल लॉक है।

मुझे मिला एक समाधान वीबी में नियंत्रण सक्षम नहीं है, लेकिन मेरे नियंत्रण के पूर्ण नाम के साथ CreateObject() का उपयोग करें। समस्या यह है कि मुझे अपने नियंत्रण को ऑब्जेक्ट के रूप में घोषित करना होगा क्योंकि वीबी 6 इंटरफ़ेस का उपयोग नहीं कर रहा है और मुझे इंटेलिसेन्स तक पहुंच नहीं है, जो दर्द है।

कोई विचार है कि मैं वीबी 6 को एप्लिकेशन छोड़ने या सीधे आईडीई में नियंत्रण के बाद नियंत्रण को उतारने के लिए कैसे कह सकता हूं?

उत्तर

27

मुझे पूरा यकीन है कि नियंत्रण को उतारने के लिए वीबी 6 को मजबूर करने का कोई अच्छा तरीका नहीं है।

यहाँ मैं क्या करना है ... बजाय कुलपति के तहत विज़ुअल सी और विजुअल बेसिक पक्ष-साथ, चलाने VB6 चलाने का:

  1. लोड अप कुलपति
  2. ओपन परियोजना अपने कॉम युक्त वस्तुओं
  3. संपादित करें, परिवर्तन, आदि
  4. कुलपति में, VB6 कार्यक्षेत्र
  5. अब बस मारा लोड करने के लिए उत्पादन निष्पादन उचित कमांड लाइन तर्क के साथ VB6.EXE होना करने के लिए सेट वी 56 आईडीई लॉन्च करने के लिए एफ 5 और अपनी वीबी 6 प्रोजेक्ट
  6. लोड करें जब आप फिर से COM कोड बदलना चाहते हैं, VB6.EXE से बाहर निकलें, अपने बदलाव करें, और फिर F5 दबाएं। जब तक आप अपना वर्कस्पेस VB6 सहेजते हैं, तब तक याद रहेगा कि आपने कौन सी विंडो खोल दी थीं और आपकी सभी प्रोजेक्ट सेटिंग्स। इस विधि का

लाभ:

  • आप COM वस्तु में breakpoints सेट कर सकते हैं और डिबग यह एक पूर्ण स्रोत डिबगर
  • आप खुशी से एक ही समय में सी और VB में डीबग कर सकते हैं का उपयोग कर
  • जब भी वीबी 6 चल रहा है, तो हमेशा COM DLLs का नवीनतम संस्करण होता है
+1

यह बहुत स्मार्ट है, मैं ऐसा करने की कोशिश करूंगा। अब मुझे आश्चर्य है कि मेरे पुराने कुकी-आधारित खाते को मेरे नए ओपनआईडी-आधारित खाते से विलय किया जा सकता है, इसलिए मैं इस उत्तर को उत्तर के रूप में चिह्नित कर सकता हूं ... –

+2

यह वीबी की तुलना में अन्य आईडीई के साथ भी काम करता है। मैंने इसे डेल्फी/वीबी 6 के साथ सफलतापूर्वक किया है। –