重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c#开发ocx-创新互联

在C#中,其实没有OCX控件一说,相对应的只是COM组件,编译后也是.DLL,而不是.ocx.所以在C#中,在创建项目时只能创建类库项目。
然后就是具体的代码开发。(略)
要使组件成为能被网页脚本调用的OCX控件,在开发时,要注意以下几点:
1、必须要为将发布OCX控件的主类设置GUID码。该码在创建类库时,C#会自动生成一个(你可以使用,也可以重新生成),并存储在AssemblyInfo.cs中。设置GUID的代码参照以下:
namespace xxxx
{
  [Guid("8d7d8518-ca58-4863-b94d-3c616fda7b35")]//从AssemblyInfo.cs文件中直接复制过来
  public partial class RunData : UserControl, IObjectSafety
  {}
}
2、必须要实现IObjectSafety接口。该接口需要手工创建一个接口类并让OCX组件实现。
完整的接口代码:(以下接口代码都是固定的,最好不要做其他改动)
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls.WebParts; //必须引用该包
using System.Security;
using System.Runtime.InteropServices;    //必须引用该包
namespace RunData
{
  ///
  /// 把控件发布成com组件时必须实现的接口.该接口的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);
  }
}
接口实现:
public void GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions)
      {
        pdwSupportedOptions = 1;  //不要修改该代码
        pdwEnabledOptions = 2;  //不要修改该代码
        return;
      }
public  void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions)
      {
        return;
      }
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引用方式进行引用,格式:
也可以使用clsid方式引用。
如果非IIS应用服务器,如tomcat等,则只能使用CLSID方式。格式:
"8d7d8518-ca58-4863-b94d-3c616fda7b35"就是最开始提到的那个GUID码!
在本机上运行此网页应该不会出现问题了,因为在开发组件的过程中VS.NET会自动进行组件注册。
使用OLE查看器可以查看当前组件是否成功注册到本机,如果没有找到该组件,应该使用手工注册方式进行注册。
通常情况下手工注册OCX都是采用RegSvr32.exe,但注册C#编写的COM组件推荐使用.NET自带的注册工具RrgAsm.exe工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本

10年积累的成都网站制作、做网站、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有多伦免费网站建设让你可以放心的选择与我们合作。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:c#开发ocx-创新互联
网站地址:http://cqcxhl.com/article/dgchec.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP