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工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本。 

  • 相关阅读:
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    210 Course ScheduleII
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    sql 开发经验
  • 原文地址:https://www.cnblogs.com/whisht/p/2251815.html
Copyright © 2011-2022 走看看