zoukankan      html  css  js  c++  java
  • C#开发ActiveX控件并应用于网页

    在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:WindowsMicrosoft.NETFrameworkv2.0.50727
    RegAsm.exe G:MyCodecomocxDevControlCollDevControlCollinDebugDevControlColl.dll
    pause
    注销:
    cd C:WindowsMicrosoft.NETFrameworkv2.0.50727
    RegAsm.exe /u G:MyCodecomocxDevControlCollDevControlCollinDebugDevControlColl.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;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码。

    嵌入效果如下:

     

    大功告成了。这只是开始,希望能给大家带来帮助。
    ————————————————
    版权声明:本文为CSDN博主「千杯不醉-sen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yang_sen_/java/article/details/62043429

  • 相关阅读:
    从无到有制作Deb包的一个实例
    Redis内存存储结构分析
    岳麓实践论
    金砖四国(巴西、俄罗斯、印度和中国)
    用LLVM开发新语言
    QQ云输入法
    http://baike.baidu.com/view/1926473.htm
    21世纪商业评论
    update ubuntu to 11.10
    gnu make 中文手册教程pdf
  • 原文地址:https://www.cnblogs.com/turnip/p/13151248.html
Copyright © 2011-2022 走看看