visual studio 2010 - मैं सी#में ActiveX नियंत्रण(COM) कैसे बना सकता हूं?




visual-studio-2010 c#-4.0 (2)

मैं एक ActiveX नियंत्रण बनाने की कोशिश कर रहा हूँ। मैं Visual Studio 2010 (.NET 4) का उपयोग कर रहा हूं। मुझे एक COM ऑब्जेक्ट (सी # में) बनाने की आवश्यकता है और मुझे पता नहीं है कि कैसे शुरू किया जाए (किस प्रकार का प्रोजेक्ट उपयोग करना है, आदि)


आप कक्षा पुस्तकालय परियोजना का उपयोग कर सकते हैं। विधियों के साथ एक प्रकार घोषित करें जो COM ऑब्जेक्ट के रूप में उजागर किया जाएगा।

सुनिश्चित करें कि असेंबली COM-visible बना दिया गया है:

और अंत में regasm.exe का उपयोग करके इसे पंजीकृत करें:

regasm.exe /codebase mylib.dll

अब असेंबली को COM ऑब्जेक्ट के रूप में उजागर किया गया है और आपके द्वारा घोषित किए गए प्रकार को COM का समर्थन करने वाले किसी भी ग्राहक द्वारा उपभोग किया जा सकता है।


ठीक है मुझे समाधान मिला और मैं इसे सामान्य अच्छे के लिए यहां लिखूंगा।

  1. व्यवस्थापक के रूप में VS2010 शुरू करें।
  2. एक कक्षा पुस्तकालय परियोजना खोलें (exmaple - MyProject)।
  3. प्रोजेक्ट में एक नया इंटरफ़ेस जोड़ें (नीचे उदाहरण देखें)।
  4. एक using System.Runtime.InteropServices; जोड़ें using System.Runtime.InteropServices; फ़ाइल में
  5. इंटरफ़ेस में इंटरफ़ेस टाइप करें, मार्गदर्शिका जोड़ें।
  6. आप टूल्स का उपयोग करके एक ग्रिड उत्पन्न कर सकते हैं-> GUID उत्पन्न करें (विकल्प 4)।
  7. इंटरफ़ेस को लागू करने वाली कक्षा जोड़ें।
  8. इंटरफेस में क्लासइंटरफेस, ग्रिड, प्रोगिड गुण जोड़ें।
    प्रोगिड सम्मेलन {नेमस्पेस} है। {वर्ग}
  9. असेंबलीइन्फो फ़ाइल में प्रोजेक्ट में गुण फ़ोल्डर के तहत सत्य के लिए ComVisible सेट करें।
  10. प्रोजेक्ट प्रॉपर्टी मेनू में, बिल्ड टैब मार्क में "COM इंटरऑप के लिए रजिस्टर करें"
  11. परियोजना का निर्माण करें

अब आप अपने COM ऑब्जेक्ट का उपयोग अपने प्रोगिड का उपयोग करके कर सकते हैं।

उदाहरण: सी # कोड:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Runtime.InteropServices;

namespace Launcher
{

    [InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
    public interface ILauncher
    {
        void launch();
    }

    [ClassInterface(ClassInterfaceType.None), Guid("YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYY"), ProgId("Launcher.Launcher")]
    public class Launcher : ILauncher
    {
        private string path = null;

        public void launch()
        {
            Console.WriteLine("I launch scripts for a living.");

        }

    }
}

और COM का उपयोग कर वीबी स्क्रिप्ट:

set obj = createObject("PSLauncher.PSLauncher") obj.launch()

और आउटपुट होगा:

मैं एक जीवित रहने के लिए स्क्रिप्ट लॉन्च करता हूं





c#-4.0