在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
{
/// <summary>
/// 把控件发布成com组件时必须实现的接口.该接口的GUID是固定的,不能修改,否则组件发布不成功
/// </summary>
[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引用方式进行引用,格式:
<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工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本。
引用:http://qzone.qq.com/blog/3116246-1229694092
分享到:
相关推荐
在标题"使用C#开发OCX控件.rar_C# OCX_c#开发的.ocx_c#开发的ocx_locationqyb_ocx"中,我们可以看到,这是一个关于C#创建OCX控件的教程,重点涉及了特定的OCX控件——locationqyb_ocx。 首先,我们需要了解OCX控件...
标题中的"OCX.rar_Zebra_c# ocx"暗示了这是一个与Zebra打印机相关的C#控件,OCX是微软ActiveX技术中的组件格式,通常用于Windows应用程序开发。Zebra是一家知名的条形码和标签打印机制造商,而ZXP Series 3是他们的...
### C#中调用OCX控件的详细指南 #### 一、调用OCX控件的基本步骤 在C#中使用OCX控件需要经过几个关键步骤: 1. **OCX控件注册**:首先确保OCX控件已经在系统中正确注册。这通常通过命令行工具`regsvr32.exe`完成...
附件是提供了一个Winform动态引用Ocx控件的方法,包含说明文档。本例程是以Samlight的OCX控件编写
C#自动实现DLL(OCX)控件注册 C#自动实现DLL(OCX)控件注册是指通过C#程序自动注册DLL(OCX)控件,使得控件可以在项目中正确使用。本文将介绍两种实现自动注册的方法,并对每种方法进行详细的解释。 方法一:调用...
### C#调用OCX控件的方法 在C#中调用OCX控件是一种常见的技术,尤其是在需要利用已有组件功能的时候。本文将详细介绍如何在C#中注册、导入并使用OCX控件。 #### 一、注册OCX控件 在使用OCX控件之前,首先需要将其...
在IT行业中,开发ActiveX或OCX插件是一项常见的任务,尤其在构建跨平台和跨语言交互的应用程序时。ActiveX是微软推出的一种技术,它允许开发者创建可以在不同应用程序之间共享的小型组件,通常用于增强网页功能或者...
**C# 开发 OCX 控件与 ASP.NET 调用 OCX 知识点详解** OCX(Object Linking and Embedding Control)控件,是Microsoft为Windows平台设计的一种组件,它允许开发者创建可重用的用户界面元素。本教程主要讲解如何...
在C#编程环境中,开发人员经常需要处理与打印相关的任务,包括打印预览和实际打印。这个场景下,我们可以利用.NET Framework提供的丰富的打印支持来实现这些功能。以下是一些关键的知识点,涵盖了如何使用C#中的控件...
在C#中调用OCX(ActiveX控件)时常会遇到一个问题,即如何正确地在函数中传递数组。由于C#是托管语言,而OCX控件通常是非托管的COM组件,两者之间的数据交互需要特别处理。这个问题的焦点在于如何将C#中的数组转换为...
### C# 编程实现 OCX 控件的创建与交互 #### 一、概述 在.NET框架中,C#作为一种强大的编程语言,被广泛应用于Windows应用程序的开发之中。本篇文章将详细探讨如何利用C#来编写一个OCX控件,并通过实例演示其基本...
在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序,包括Windows桌面应用。在Windows桌面应用中,为了使用户界面(UI)更加生动有趣,有时我们需要在窗体上展示动态的GIF图像。标题提到的"C# 播放gif控件...
在C#编程中,操作Excel文件是常见的任务之一,尤其在数据处理和报表生成的场景中。本篇文章将深入探讨如何使用旧版的ADO.NET(OLE DB)接口来打开并绑定Excel文件到DataGridView控件,以便进行数据展示和交互。 ...
在“ie浏览器 js调用 ocx 异步打印pdf、图片控件”的场景中,我们将探讨如何利用JavaScript调用OCX控件来实现异步打印功能,特别是针对PDF和图片文件。 首先,我们需要在Web服务器上部署这个OCX控件。部署过程包括...
C#开发ActiveX控件并生成exe安装文件, 项目在VS2017上使用,需要.net 2.0支持。内含ActiveX项目和安装包ActiveXSetup项目,ActiveX项目编译完成后,再运行安装包ActiveXSetup项目,会在output文件夹下生成安装文件...
"ocx开发文档"可能是指包含控件的详细信息和如何在C#中使用的说明,OCX是OLE定制控件(Object Linking and Embedding Control)的扩展名,是Windows平台上的一种控件技术。在这里,OCX可能是用于在应用程序中嵌入...
本话题聚焦于如何使用VS2010来编写C#的OCX(ActiveX Control)控件。OCX控件是Windows应用程序开发中的一个重要组成部分,它们允许开发者创建可重用的用户界面元素,这些元素可以被其他应用程序集成或嵌入。 1. **...
在C#程序开发中,直接引用OCX文件是不被支持的,但是可以将OCX文件转换成DLL文件,然后在C#项目中进行引用。具体的方法和步骤如下: 首先,需要确保你的开发环境中已经安装了Visual Studio,这里以Visual Studio ...
下面我们将深入探讨如何在C#中调用OCX控件,以及在没有父窗口的控制台程序中实现这一操作。 首先,为了在C#项目中使用OCX控件,我们需要进行以下步骤: 1. **注册OCX控件**:在命令行中使用`regsvr32`命令注册OCX...