`
wyf
  • 浏览: 433100 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

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 
{ 
    /// <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工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/accpyy/archive/2009/02/22/3922792.aspx
 
分享到:
评论

相关推荐

    C#开发OCX控件,已经ASP.net调用OCX

    【标题】:“C#开发OCX控件及ASP.NET调用OCX教程” 【内容】: 本教程聚焦于使用C#编程语言开发OCX(OLE Control Extension)控件,并在ASP.NET环境中进行调用,这对于那些希望深入理解.NET框架与Web应用程序交互的...

    使用C#开发OCX控件.rar_C# OCX_c#开发的.ocx_c#开发的ocx_locationqyb_ocx

    在标题"使用C#开发OCX控件.rar_C# OCX_c#开发的.ocx_c#开发的ocx_locationqyb_ocx"中,我们可以看到,这是一个关于C#创建OCX控件的教程,重点涉及了特定的OCX控件——locationqyb_ocx。 首先,我们需要了解OCX控件...

    c#调用ocx控件的方法

    ### C#调用OCX控件的方法 在C#中调用OCX控件是一种常见的技术,尤其是在需要利用已有组件功能的时候。本文将详细介绍如何在C#中注册、导入并使用OCX控件。 #### 一、注册OCX控件 在使用OCX控件之前,首先需要将其...

    Activex\C#开发ActiveX控件,.NET开发OCX控件案例

    ### Activex\C#开发ActiveX控件,.NET开发OCX控件案例 #### 什么是ActiveX控件? ActiveX控件是一种软件组件或对象,它能够被嵌入到Web页面或其他应用程序中,以增强功能性和交互性。这些控件允许在浏览器中运行...

    海康威视摄像头OCX控件

    海康威视摄像头OCX控件就是这样一个组件,它允许开发者在不同的编程环境中,如C#、Visual Basic (VB) 或者组态王,轻松地集成和操控海康威视的摄像头设备。 海康威视摄像头OCX控件的核心功能包括: 1. 显示摄像头...

    海康内部ocx视频控件,海康官方ocx控件下载,C,C++

    在实际开发过程中,可能会遇到兼容性问题,如不同版本的ocx控件与操作系统之间的匹配,或者是不同类型的海康设备所需的特定设置。此时,需要查阅海康提供的官方文档或技术支持,以获取最准确的解决方案。 总的来说...

    C#中调用OCX控件

    ### C#中调用OCX控件的详细指南 #### 一、调用OCX控件的基本步骤 在C#中使用OCX控件需要经过几个关键步骤: 1. **OCX控件注册**:首先确保OCX控件已经在系统中正确注册。这通常通过命令行工具`regsvr32.exe`完成...

    将第三方库封装为OCX控件(多屏显示控件)

    总结起来,"将第三方库封装为OCX控件(多屏显示控件)"是一项技术含量较高的工作,它涉及到COM组件开发、视频处理、UI设计等多个领域。通过这一过程,可以将复杂的视频监控功能简化为易于使用的控件,便于在各种应用...

    vs2010编写C#的ocx控件

    OCX控件是Windows应用程序开发中的一个重要组成部分,它们允许开发者创建可重用的用户界面元素,这些元素可以被其他应用程序集成或嵌入。 1. **什么是OCX控件?** OCX控件(也称为ActiveX控件)是基于Microsoft ...

    C#自动实现DLL(OCX)控件注册

    C#自动实现DLL(OCX)控件注册 C#自动实现DLL(OCX)控件注册是指通过C#程序自动注册DLL(OCX)控件,使得控件可以在项目中正确使用。本文将介绍两种实现自动注册的方法,并对每种方法进行详细的解释。 方法一:调用...

    c#调用c++ocx控件的详细代码

    OCX控件是Microsoft为开发桌面应用程序提供的一种组件,它允许开发者在各种应用程序中复用已有的功能。 首先,理解OCX控件的本质是关键。OCX控件实际上是基于COM(Component Object Model)的,它们是二进制级别的...

    ocx.rar_C#调用ocx_OCX 控件_ocx_ocx窗口

    下面我们将深入探讨如何在C#中调用OCX控件,以及在没有父窗口的控制台程序中实现这一操作。 首先,为了在C#项目中使用OCX控件,我们需要进行以下步骤: 1. **注册OCX控件**:在命令行中使用`regsvr32`命令注册OCX...

    C#使用控件调用打印机实现打印预览、打印

    在C#编程环境中,开发人员经常需要处理与打印相关的任务,包括打印预览和实际打印。这个场景下,我们可以利用.NET Framework提供的丰富的打印支持来实现这些功能。以下是一些关键的知识点,涵盖了如何使用C#中的控件...

    vba调用二维码 OCX控件

    首先,需要在 Excel 中启用“开发工具”项,然后插入 OCX 控件。在插入 OCX 控件后,可以根据需要设置相关属性。然后,在 VBA 代码中,我们可以使用以下代码来生成二维码: ```vb Public Sub QRCodeTest() '定义 ...

    Qt/C++中使用OCX控件的调用方法及事件处理代码实例

    Qt/C++中使用OCX控件的调用方法及事件处理 代码实例简单的调用了OCX提供的函数,和OCX事件处理(采用了信号与槽的方式),调用qt的方法获取列出所有ocx控件的所有信号、函数、属性等。 谢谢大家的分享和分数,我很...

    dsoframer.ocx控件以及使用方法

    dsoframer.ocx控件可以在Visual Basic 6、VB.NET、VC++、Delphi等支持ActiveX技术的开发环境中使用。以下是一些基本步骤: 1. **添加控件**:在开发环境的工具箱中右键,选择“选择项”,然后在弹出的对话框中浏览...

    海康摄像头OCX控件接口+网页demo

    海康威视的摄像头在网页中进行集成时候需要安装OCX控件,此资源为exe版本,安装之后打开index.html这个demo文件。会提示下载安装cab,再次点击安装,即可使用。index.html这个demo中提供了海康摄像头集成的大部分...

    Winform上嵌入Unity Web Player OCX控件及示例工程

    然而,有时我们可能希望在这些WinForm界面中集成一些更丰富的3D交互内容,这就是Unity Web Player OCX控件的用武之地。Unity Web Player是一种浏览器插件,允许用户在网页上运行Unity开发的3D游戏和应用程序。而在...

Global site tag (gtag.js) - Google Analytics