zoukankan      html  css  js  c++  java
  • C# OCX控件之开发

    在C#中,其实没有OCX控件一说,相对应的只是COM组件,编译后也是.DLL,而不是.ocx.所以在C#中,在创建项目时只能创建类库项目。 然后就是具体的代码开发。(略) 要使组件成为能被网页脚本调用的OCX控件,在开发时,要注意以下几点: 1、必须要为将发布OCX控件的主类设置GUID码。该码在创建类库时,C#会自动生成一个(你可以使用,也可以重新生成),并存储在AssemblyInfo.cs中。设置GUID的代码参照以下:

    2、必须要实现IObjectSafety接口。该接口需要手工创建一个接口类并让OCX组件实现。 
    完整的接口代码:(以下接口代码都是固定的,最好不要做其他改动) 

    3、对AssemblyInfo.cs进行编辑,修改相应的属性。包括以下属性及值: 
        // 则将该类型上的 ComVisible 属性设置为 true。 
        [assembly: ComVisible(true)] //将false更改为true,自动生成的注释也做了说明 
        //新添加下面的属性。该属性要求引用System.Security 
        [assembly: AllowPartiallyTrustedCallers()] 
       // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 
       //[assembly: Guid("80c07fca-841c-43c9-bd34-e9f3a6e87a85")]  //注释掉该属性,此属性必须注释,最初我没有注释此属性,生成COM组件老是不成功,有警告,会影响最后的发布.试了N次才试出原因是没有注释此属性。 
        要引用:using System.Runtime.InteropServices; 
    4、编辑工程属性。 
       A、在[应用程序]页,输出类型必须指定为“类库”. 
       B、在[生成]页,必须勾选“为Com Interop注册”选项。 
    作了以上修改,如果能编译成功,则表示你的COM组件已够在你本机发布成功了。也说明你的组件本身没什么问题了。

    你可以写一个测试网页对你的COM组件进行引用了。 
    如果是IIS,可以直接使用DLL引用方式进行引用,格式: 
    <object ></object> 
    也可以使用clsid方式引用。 
    如果非IIS应用服务器,如tomcat等,则只能使用CLSID方式。格式: 
    <OBJECT ID="DataCtl" CLASSID="CLSID:8d7d8518-ca58-4863-b94d-3c616fda7b35"></OBJECT> 
    "8d7d8518-ca58-4863-b94d-3c616fda7b35"就是最开始提到的那个GUID码! 
    在本机上运行此网页应该不会出现问题了,因为在开发组件的过程中VS.NET会自动进行组件注册。 
    使用OLE查看器可以查看当前组件是否成功注册到本机,如果没有找到该组件,应该使用手工注册方式进行注册。 
    通常情况下手工注册OCX都是采用RegSvr32.exe,但注册C#编写的COM组件推荐使用.NET自带的注册工具RrgAsm.exe工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本。 

  • 相关阅读:
    Junit单元测试
    Stream流方法引用
    Stream流思想和常用方法
    算法
    函数式接口
    Zookeeper理解
    GreenPlum学习之(Share-nothing)架构
    链表反转问题
    KMP算法的java实现
    KMP详解之二
  • 原文地址:https://www.cnblogs.com/whisht/p/2251815.html
Copyright © 2011-2022 走看看