c# ocx开发 - CSDN
精华内容
参与话题
  • 关于C#开发OCX组件的说明

    千次阅读 2016-10-18 17:33:14
    OCX是指用C++、C#或者VB开发的COM组件,对外开放的接口可提供和html进行调用,解决html调用本地电脑资源或者第三方集成的问题。应用场景包括银行、视频播放(用flash也能解决相关问题)等。   2、 OCX、COM的...

    1、  什么是OCX?

    OCX是指用C++、C#或者VB开发的COM组件,对外开放的接口可提供和html进行调用,解决html调用本地电脑资源或者第三方集成的问题。应用场景包括银行、视频播放(用flash也能解决相关问题)等。

     

    2、  OCX、COM的区别以及C++、C#和VB开发的组件的区别?

    对于HTML调用的组件来说,OCX和COM没有任何区别,用C++和VB开发可以生成OCX或COM组件,但是用C#只能生成COM组件。

    C#是微软的产物,所以其生成的COM组件目前只能提供给IE使用;

    OCX同样支持IE,但是在也可以开发出非IE内核使用;

     

    3、  C#开发COM组件需要选择的项目?

    对于windows开发而言,实质上开发COM就是开发DLL,选择C#开发基本上都是使用Virual Studio(我使用的是VS2008,.NET版本是3.5),新建项目选择类库即可。

    4、  开发结束后对外开放的接口如何提供给HTML使用?

    想要使DLL能为COM组件在程序里需要对AssemblyInfo.cs(Android开发同事可以将其理解为Android里面的AndroidManifest.xml)文件添加[assembly: Guid("151e5c23-d121-4f26-a035-7a43f6d775b0")],表示此项目向COM公开,GUID用于类型库;

     

    在开放接口类里面实现IObjectSafety接口(实现代码不用改,网上都是一样的,直接拿过来就行);

     

    最后在你的开放接口类外部添加自定义GUID,这是最关键的一步,[GuidAttribute("1A585C4D-3371-48dc-AF8A-AFFECC1B0967")],这个GUID需要自己生成,HTML的开发者在集成安装你提供的COM组件后需要知道你的GUID,才能正常使用你提供的接口;

     

    HTML里面先加载COM组件(注意:这里对于HTML而言不关注OCX或者COM里,调用方法一样),<objectid="YouOcx"classid="clsid:FD05F7D5-BA6A-4d6a-9F79-DFADB79BA2B0"></object>, 这里的classid就是你开发COM组件所 使用的GUID,然后在html里面就可以使用该对象了,varocx = document.getElementById("YouOcx ");

    ocx.XXX();,这里的XXX()就是你COM所提供给HTML调用的方法。

     

    展开全文
  • c#开发ocx

    2013-06-24 09:39:18
    C#中,其实没有OCX控件一说,相对应的只是COM组件,编译后也是.DLL,而不是.ocx.所以在C#中,在创建项目时只能创建类库...要使组件成为能被网页脚本调用的OCX控件,在开发时,要注意以下几点: 1、必须要为将发布OC

    http://www.cnblogs.com/songling/archive/2011/12/09/2281674.html

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

    展开全文
  • C#开发OCX控件,已经ASP.net调用OCX

    热门讨论 2020-07-29 14:20:44
    VS2010程序,有两个程序,一个是如何创建OCX控件,一个是如何在ASP.NET中调用ocx, 适合初学者学习。
  • ... 讲下什么是ActiveX控件,到底...在网页中又如何使用OCX控件,如QQ邮箱的大文件上传应该就是使用OCX控件的,下面开始吧。 0. 前言 ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插...

    http://xiaochen.2003.4.blog.163.com/blog/static/480409672012530227678/

    讲下什么是ActiveX控件,到底有什么作用?在网页中又如何使用OCX控件,如QQ邮箱的大文件上传应该就是使用OCX控件的,下面开始吧。

    0. 前言
          ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。使用ActiveX插件,可以轻松方便的在 Web页中插入多媒体效果、交互式对象以及复杂程序等等。

          通常使用C++或VB开发ActiveX控件,本文探讨一下在Visual Studio 2005环境中使用C#开发ActiveX控件的技术实现。

    1. 问题场景
          在C/S架构的系统中,客户端要实现某些业务功能,可以通过安装相关的应用程序集来方便的实现。同样的需求,在B/S架构的系统里实现起来却比较困难。因 为所有的程序都放在服务器端,客户端只是采用浏览器,通过HTTP协议来访问服务器端。比较成熟的解决办法是开发ActiveX控件安装到客户端,这样客 户端的浏览器就可以访问本地的ActiveX控件来执行相关的本地操作。本文将要谈论的,就是使用C#开发一个ActiveX控件实现读取并显示客户端的 系统时间。

    2. 开发环境
    Windows XP
    Visual Studio 2005
    .NET Framework 2.0(C#)
    3. 实现过程
    3.1.ActiveX 控件开发
          在Visual Studio 2005开发环境中,可以使用Windows控件库项目实现ActiveX控件的开发,但是需要对项目做一些必要的设置。下面就来看看如何使用 Windows控件库项目开发一个ActiveX控件。首先创建一个应用程序解决方案,并添加一个Windows控件库项目:
    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来

          更改“项目属性-应用程序-程序集信息”设置,勾选“使程序集 COM 可见”:

    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来
         更改“项目属性-生成”设置,勾选“为 COM Interop 注册”(注意,此处如果实在debug状态下修改的,那在调到release状态下还需要再设置一次):
    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来

          修改AssemblyInfo.cs文件,添加[assembly: AllowPartiallyTrustedCallers()]项(需要引用System.Security名称空间):

    using System.Reflection;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;
    using System.Security;

    [assembly: AssemblyTitle( " Yilin.Preresearch.CSharpActiveX " )]
    [assembly: AssemblyDescription( "" )]
    [assembly: AssemblyConfiguration( "" )]
    [assembly: AssemblyCompany( " 10BAR " )]
    [assembly: AssemblyProduct( " Yilin.Preresearch.CSharpActiveX " )]
    [assembly: AssemblyCopyright( " Copyright ? 10BAR 2009 " )]
    [assembly: AssemblyTrademark( "" )]
    [assembly: AssemblyCulture( "" )]
    [assembly: AllowPartiallyTrustedCallers()]
    [assembly: ComVisible( true )]
    [assembly: Guid( " 114d1f0c-43b8-40ac-ae7c-5adccc19aef3 " )]
    [assembly: AssemblyVersion( " 1.0.0.0 " )]
    [assembly: AssemblyFileVersion( " 1.0.0.0 " )]
           添加一个Windows用户控件:
    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来
           按照开发Windows用户控件一样的思路完成该控件的开发,本例中主要实现了两个业务功能,一个是提供一个公共方法,用于读取USBKey中保存的签名 证书,保存到本地C盘根目录下,并返回操作信息;另一个业务功能提供UI界面,包括一个Button控件和一个Label控件,Button控件的 Click事件调用前面提供的那个方法,并将返回信息显示到Label控件上。这样做可以达到两个目的,其一,ActiveX控件提供公共方法供B/S程 序直接调用,从后实现业务功能;其二,ActiveX控件可以提供B/S程序UI界面,通过响应B/S程序中对UI的操作事件实现业务功能。

    完成控件开发后,为了使该用户控件作为一个ActiveX控件进行使用,还需要做以下修改:
          首先,为控件类添加GUID,这个编号将用于B/S系统的客户端调用时使用(可以使用 工具-创建GUID 菜单创建一个GUID):

    Guid( " 4A44CF4E-F859-4328-AA22-3E9D7AFFF1AB " )]
    public   partial   class Hello : UserControl
    {
          其次,为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口。先创建该接口(注意,不能修改该接口的GUID值):

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;

    namespace Preresearch.CSharpActiveX
    {
        [ComImport, GuidAttribute( " CB5BDC81-93C1-11CF-8F20-00805F2CD064 " )]
        [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
         public   interface IObjectSafety
        {
            [PreserveSig]
             int GetInterfaceSafetyOptions( ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref   int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref   int pdwEnabledOptions);

            [PreserveSig()]
             int SetInterfaceSafetyOptions( ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
        }
    }
          然后在控件类中继承并实现该接口:

    #region IObjectSafety 成员

    private   const   string _IID_IDispatch =   " {00020400-0000-0000-C000-000000000046} " ;
    private   const   string _IID_IDispatchEx =   " {a6ef9860-c720-11d0-9337-00a0c90dcaa9} " ;
    private   const   string _IID_IPersistStorage =   " {0000010A-0000-0000-C000-000000000046} " ;
    private   const   string _IID_IPersistStream =   " {00000109-0000-0000-C000-000000000046} " ;
    private   const   string _IID_IPersistPropertyBag =   " {37D84F60-42CB-11CE-8135-00AA004BB851} " ;
    private   const   int INTERFACESAFE_FOR_UNTRUSTED_CALLER =   0x00000001 ;
    private   const   int INTERFACESAFE_FOR_UNTRUSTED_DATA =   0x00000002 ;
    private   const   int S_OK =   0 ;
    private   const   int E_FAIL =   unchecked (( int ) 0x80004005 );
    private   const   int E_NOINTERFACE =   unchecked (( int ) 0x80004002 );

    private   bool _fSafeForScripting =   true ;
    private   bool _fSafeForInitializing =   true ;

    public   int GetInterfaceSafetyOptions( ref Guid riid, ref   int pdwSupportedOptions, ref   int pdwEnabledOptions)
    {
         int Rslt = E_FAIL;

         string strGUID = riid.ToString( " B " );
        pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
         switch (strGUID)
        {
             case _IID_IDispatch:
             case _IID_IDispatchEx:
                Rslt = S_OK;
                pdwEnabledOptions =   0 ;
                 if (_fSafeForScripting ==   true )
                    pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
                 break ;
             case _IID_IPersistStorage:
             case _IID_IPersistStream:
             case _IID_IPersistPropertyBag:
                Rslt = S_OK;
                pdwEnabledOptions =   0 ;
                 if (_fSafeForInitializing ==   true )
                    pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
                 break ;
             default :
                Rslt = E_NOINTERFACE;
                 break ;
        }

         return Rslt;
    }

    public   int SetInterfaceSafetyOptions( ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)
    {
         int Rslt = E_FAIL;
         string strGUID = riid.ToString( " B " );
         switch (strGUID)
        {
             case _IID_IDispatch:
             case _IID_IDispatchEx:
                 if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_CALLER) && (_fSafeForScripting ==   true ))
                    Rslt = S_OK;
                 break ;
             case _IID_IPersistStorage:
             case _IID_IPersistStream:
             case _IID_IPersistPropertyBag:
                 if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_DATA) && (_fSafeForInitializing ==   true ))
                    Rslt = S_OK;
                 break ;
             default :
                Rslt = E_NOINTERFACE;
                 break ;
        }
    return Rslt;
    }

    #endregion
          这样,一个ActiveX控件就开发完成了。

    3.2.ActiveX 控件部署
          ActiveX控件可以使用Visual Studio 2005的安装项目进行部署。这与普通的Windows Form应用程序的部署几乎一样,只有一个地方需要注意,将前面创建的用户控件项目作为主输出项目,并设置其Register属性为vsdrpCOM,如 下图所示:
    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来

    3.3.测试
          建立一个Web应用程序项目,在测试页面的HTML代码中添加对ActiveX控件的引用,并且可以通过Javascript调用控件的公共成员(注意这里clsid后面的值即为前面为用户控件类设置的GUID):

    < object id ="csharpActiveX" classid ="clsid:E5E0446C-8680-4444-9FC2-F837BC617ED9" ></ object >
    < input type ="button" onclick ="alert(csharpActiveX.SayHello());" value ="显示当前时间"   />
          将该Web应用程序项目发布到IIS。另外找一台电脑作为客户端测试环境,确保它与服务器端网络连通,安装.NET Framework 2.0和该ActiveX控件。安装完成后,就可以用浏览器访问服务器,进行测试了(你也可以在开发环境的系统中安装该ActiveX控件,并直接在VS 2005中运行WebApp项目查看结果):

    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来

    4. 总结
          综上所述,在Visual Studio 2005环境中使用C#开发ActiveX控件,技术实现上没有什么难度,唯一的问题就是客户端需要安装.NET Framework。鉴于ActiveX控件一般都是实现一些简单单一的功能,.NET Framework 2.0已经完全可以应付,所以建议在.NET Framework 2.0下开发。因为相对于.NET Framework 3.5两百多兆的安装包,.NET Framework 2.0安装包只有20多兆,用户相对容易接受一些。

    5. FAQ
    5.1.出现如下错误怎么解决?
    C开发ActiveX控件,.NET开发OCX控件案例 - 萧尘 - 无边落木萧萧下,不尽飞尘滚滚来
           经在网上查阅,该问题是Visual Studio 2005的一个Bug,并不是每次都发生。我的解决办法是从Visual Studio 2008的安装目录里拷贝regcap.exe覆盖Visual Studio 2005的对应文件,文件目录一般为“~\Microsoft Visual Studio 8\Common7\Tools\Deployment egcap.exe”。压缩包中提供了该文件的Visual Studio 2008版本。

     

    引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html

    展开全文
  • C#开发OCX控件之开发

    2014-09-22 15:24:47
    C#中,其实没有OCX控件一说,相对应的只是COM组件,编译后也是.DLL,而不是.ocx.所以在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工具,而且使用的注册工具版本一定要与开发框架版本一起发布的版本。 
    展开全文
  • C# OCX控件之开发

    千次阅读 2009-12-28 22:48:00
    (略) 要使组件变为能被网页脚本调用的OCX控件,在开发时,要注意以下几点: 一、务必要为将公布OCX控件的主类设立GUID码。该码在创造类库时,C#能自动生成一个(你可以应用,也可以从新生成),依存储在AssemblyInf
  • 使用C#开发ActiveX控件(新)

    千次阅读 2013-06-26 19:46:41
    前言 ActiveX控件以前也...通常ActiveX控件都是用C++或VB语言开发,本文介绍另一种方式,在.NET Framework平台上,使用C#语言开发ActiveX控件。 虽然本文通篇都在讲如何使用C#语言开发ActiveX控件,但我并不极力推荐使
  • C#开发IE插件(ActiveX)

    热门讨论 2020-07-30 23:30:38
    博客笔记文章中对应的源码工程: 主要实现用C#开发ActiveX空间并嵌入到IE浏览器 以及实现Javascript与ActiveX之间的双向交互
  • 在本文中,给出一个C#示例程序,调用上一篇博文中创建的MultiplyDemo.ocx控件。注意需要保证该控件已经注册过。 启动Visual Studio 2010,使用C#创建一个Windows窗体程序,如下图: 点击“确定”按钮之后,就自动...
  • C#封装ocx控件

    万次阅读 2012-05-18 00:43:19
    估计大家常会遇到这么一个问题,总是想把做好的控件封装成ocx,或是dll,直接在工具箱内进行引用,而不是直接在解决方案内进行引用,但是ocx一般都是C++MFC进行封装的,这让很多没学过C++的人来说,无疑多了份困难,...
  • C# OCX控件之开发

    千次阅读 2009-02-22 18:28:00
    (略) 要使组件成为能被网页脚本调用的OCX控件,在开发时,要注意以下几点: 1、必须要为将发布OCX控件的主类设置GUID码。该码在创建类库时,C#会自动生成一个(你可以使用,也可以重新生成),并存储在AssemblyInfo....
  • C#调用OCX控件

    千次阅读 2017-09-06 16:58:05
    之前写了一个调用OCX的winfrom程序,之前运行一直好使,但是突然一天,初始化控件报错,找不到指定模块。。。。。 尝试重新下载ocx,加载ocx,失败。 尝试使用之前程序生成的dll文件失败。 最后发现电脑没有注册ocx...
  • C#调用OCX控件的常用方法[转]

    千次阅读 2019-02-21 10:10:56
    例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~别着急,今天我就给大家介绍一下C#中调用OCX接口的常用方法。^_^y 原文链接 ...
  • C#中调用OCX控件

    万次阅读 2015-09-23 15:54:46
    调用OCX控件的步骤: 1、在系统中注册该ocx控件,命令:regsvr32.exe 控件位置(加 /u 参数是取消注册) 2、在.net的工具箱中添加该控件,拖到form中去就可以了。 不用工具箱的话,自己手工添加,需要注意一个...
  • C#窗体应用程序调用ocx文件经验积累

    千次阅读 2016-10-18 18:19:08
    最近导师给了个小任务,写一个C#上位机程序控制一款位移台的运动,位移台生产商给了VB程序和*.ocx文件以方便客户进行二次开发。 (1)ocx文件要注册一下,打开VS自带的命令提示工具,输入regsver32.exe *.ocx即可...
  • Activex\C#开发ActiveX控件,.NET开发OCX控件案例
  • C#自动实现Dll(OCX)控件注册的两种方法尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写。 当需要用到Dll引用的...
1 2 3 4 5 ... 20
收藏数 1,746
精华内容 698
热门标签
关键字:

c# ocx开发