C#开发ActiveX控件并应用于网页

3 篇文章 0 订阅

在C#中相对应的是COM组件,编译后是dll而不是ocx。所以在C#中,在创建项目时只能创建类库项目。

下面我教大家如何一步一步来实现。

  • 以管理员的身份启动VS,我的是VS2015。新建类库DevControlColl,框架选择2.0即可。

这里写图片描述

  • 环境配置(勾选一下两个选项)

这里写图片描述

这里写图片描述

  • 对AssemblyInfo.cs进行编辑,修改相应的属性
    // 将false更改为true,自动生成的注释也做了说明
    [assembly: ComVisible(true)]  
    //新添加下面的属性。该属性要求引用System.Security 
    [assembly: AllowPartiallyTrustedCallers()] 
	// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 
    //[assembly: Guid("92eb428e-1894-4ca2-8e88-20fd0bb15ee5")]  //注释掉该属性
    要引用:using System.Security;
  • 定义IObjectSafety接口(无需修改,GUID不可修改)
    [Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IObjectSafety
    {  
        void GetInterfacceSafyOptions(System.Int32 riid, out System.Int32 pdwSupportedOptions, out System.Int32 pdwEnabledOptions);
        void SetInterfaceSafetyOptions(System.Int32 riid, System.Int32 dwOptionsSetMask, System.Int32 dwEnabledOptions);
    }
  • 为将发布控件设置GUID码
    [Guid("92eb428e-1894-4ca2-8e88-20fd0bb15ee5")]
    public partial class TreeList : UserControl, IObjectSafety

	// 实现如下
    public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
    {
        pdwSupportedOptions = 1;  //不要修改该代码
        pdwEnabledOptions = 2;    //不要修改该代码
        return;
    }

    public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)
    {
        return;
    }

设计的空间UI如下:

这里写图片描述

  • 注册DevControlColl.dll

.NET自带的注册工具RrgAsm.exe工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本。

我写了两个简单的批处理。

注册:
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
RegAsm.exe G:\MyCode\comocx\DevControlColl\DevControlColl\bin\Debug\DevControlColl.dll
pause
注销:
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
RegAsm.exe /u G:\MyCode\comocx\DevControlColl\DevControlColl\bin\Debug\DevControlColl.dll
pause

  • 做一个简单网页,将注册的空间嵌入。
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div style="margin:100px auto;border:1px solid #000;width:500px;height:500px;">
		<OBJECT ID="treeList" CLASSID="CLSID:92eb428e-1894-4ca2-8e88-20fd0bb15ee5"></OBJECT>
    </div>
</body>
</html>

核心嵌入代码:

<OBJECT ID="treeList" CLASSID="CLSID:92eb428e-1894-4ca2-8e88-20fd0bb15ee5">

"92eb428e-1894-4ca2-8e88-20fd0bb15ee5"就是最开始的那个GUID码。

嵌入效果如下:

这里写图片描述

大功告成了。这只是开始,希望能给大家带来帮助。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值