zoukankan      html  css  js  c++  java
  • 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,在生成之中进行打勾

    image

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

    image

    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组件名称:

    image

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

  • 相关阅读:
    WPF 分页控件Pager
    vue Map 渲染DOM
    IDEA 开发工具 Mybatis 快速开发插件 ==》MyBatisX
    令自己的本地ip可以被外网访问
    mybatis按datetime条件查询,参数为时间戳时
    springmvc传参---LocalDateTime、Date等时间类型转换
    java excel导出(表头合并,多行表头)
    JMeter学习工具简单介绍
    idea项目 run、debug变灰色的问题
    vue的ui库使用Element UI,纯html页面,不使用webpack那玩意
  • 原文地址:https://www.cnblogs.com/frogkiller/p/12456146.html
Copyright © 2011-2022 走看看