.NET OCX开发

本文主要介绍怎么在.NET环境下开发OCX控件,打包安装部署程序,以及怎么在页面上调用控件。


开发

1、新建一个类库,然后打开类库的属性,应用程序→程序集信息
这里写图片描述

2、编辑程序集信息,主要是要把底部的 使程序集COM可见 勾上,点确定保存程序集信息
这里写图片描述

3、在类库的属性面板上选择 生成,拉到底部把 为COM互操作注册 勾上
这里写图片描述

4、在.NET下面开发OCX需要实现IObjectSafety接口,接口名称以及下面的GetInterfaceSafetyOptions和SetInterfaceSafetyOptions不要动

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    [Guid("84D0FC9A-DAB8-4620-B687-B3F9C950F2C8")]
    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    interface IObjectSafety
    {
        void GetInterfaceSafetyOptions(ref Guid riid, out  int pdwSupportdOptions, out int pdwEnabledOptions);

        void SetInterfaceSafetyOptions(ref Guid riid, int dwOptionsSetMask, int dwEnabledOptions);
    }
}

5、输出class实现IObjectSafety后,它里面的方法就可以在页面上使用了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Test
{
    [Guid("A79BF51F-D2E5-443A-BE7E-E7138FMEEFFB")]
    public class TestOCXMain : IObjectSafety
    {
        public void GetInterfaceSafetyOptions(ref Guid riid, out  int pdwSupportdOptions, out int pdwEnabledOptions)
        {
            pdwEnabledOptions = 2;
            pdwSupportdOptions = 1;
        }
        public void SetInterfaceSafetyOptions(ref Guid riid, int dwOptionsSetMask, int dwEnabledOptions)
        {
        }

        /// <summary>
        /// 页面调用方法,执行代码
        /// </summary>
        /// <param name="str"></param>
        public void Main(string str)
        {
            MessageBox.Show("你传给我的str : " + str);
        }
    }
}

打包

把程序打包成一个安装文件,在需要使用控件的客户端安装控件,就可以使用控件的功能了。

1、在解决方案下面添加一个安装部署项目,如图(因为我的VS2013没有安装这个东东,所以就只能用VS2010顶替一下)
这里写图片描述

2、选中项目,右键→添加 项目输出→选择输出主项目,确定
这里写图片描述

3、生成项目,在项目文件夹下面的Debug文件夹下面的.msi文件就是安装文件了。


使用

双击.msi文件,一直跑完就好。
页面上调用控件的方法:根据我们在程序中给定的GUID,在页面上添加<OBJECT id="TestOCX" classid="clsid:A79BF51F-D2E5-443A-BE7E-E7138FMEEFFB" style="width:0px;height:0px;display:none"></OBJECT>,然后js获取这个对象就可以直接调用它的方法了。
这里写图片描述

如果调用的时候,提示对象属性不存在,或者其他的,需要添加可信站点,并且需要启用OCX控件。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑小晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值