c#制作com组件供wincc调用

1,建立com组件

    [ComVisible(true)]
    [Guid("751452F7-4541-4483-83E0-22EDC1278F58")]
    public interface IMxbLiabray
    {
        void Initialize();
        void Dispose();
        int Add(int x, int y);
    }


    [ComVisible(true)]
    [Guid("258CBDAF-D4CD-41D4-9480-A81793846816")]
    public class MxbLiabray : Form,IMxbLiabray
    {
        private static MxbLiabray Form1;
        private int m_value;

        private Button button1;
        private ListBox listBox1;
        public int Add(int x, int y)
        {
            MessageBox.Show($"x + y");
            m_value = x + y;
            return x + y;
        }

        public void Dispose()
        {
        }

        public void Initialize()
        {
            button1 = new Button();
            button1.Left = 200;
            button1.Text = "Exit";
            button1.Click += new EventHandler(button1_Click);

            listBox1 = new ListBox();
            this.Controls.Add(button1);
            this.Controls.Add(listBox1);
            Form1 = new MxbLiabray();
            Application.Run(Form1);
        }


        private void button1_Click(object sender, System.EventArgs e)
        {
            int count = 1;
            // Check to see whether the user wants to exit the application.
            // If not, add a number to the list box.
            while (MessageBox.Show("Exit application?", "",
                MessageBoxButtons.YesNo) == DialogResult.No)
            {
                listBox1.Items.Add(count);
                count += 1;
            }

            // The user wants to exit the application.
            // Close everything down.
            Application.Exit();
        }

1,代码中,使用接口,以及guid和comvisible=true;

2,在生成之中进行打勾

c#制作com组件供wincc调用

签名那里打勾---生产强程序集

c#制作com组件供wincc调用

3,生成com组件和注册dll到全局缓存

regasm .\MxbLiabray.dll

gacutil.exe /i .\MxbLiabray.dll

4,在wincc中调用

Sub procedure1
Dim obj
Dim k
Set obj = CreateObject("MxbLiabray.MxbLiabray")
k=obj.Initialize
End Sub

注意名称:

在注册表中查看注册的com组件名称:

c#制作com组件供wincc调用

5,使用OLEVIER查看计算机内的组件,但是查不到我注册的类..

上一篇:c++指针


下一篇:C#制作Wincc组件进行配方管理(二)