zoukankan      html  css  js  c++  java
  • {VS2010C#}{WinForm}{ActiveX}VS2010C#开发基于WinForm的ActiveX控件

    在VS2010中使用C#开发基于WinForm的ActiveX控件

    常见的一些ActiveX大部分是使用VB、Delphi、C++开发,使用C#开发ActiveX要解决下面三个问题:

    • 使.NET组件可以被COM调用
    • 在客户机上注册后,ActiveX控件能通过IE的安全认证
    • 已在客户机上注册时,安装包能通过IE的签名认证

    配置:win 7,VS2010

    步骤第一步,创建控件

    1.创建WinForm控件,命名为WebForm,如图1:

     

    2.设置项目的Assembly属性,如图2所示,并对Make Assembly Com-Visible选项划钩

    并且设置项目的编译选项,如图3所示,对Register for COM Interop选中对COM组件进行注册。(注意,此处如果实在debug状态下修改的,那在调到release状态下还需要再设置一次。)

     

    3.打开AssemblyInfo文件添加引用 using System.Security; 并且添加 [assembly: AllowPartiallyTrustedCallers()] 语句

    using System.Reflection;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;
    using System.Security;   //note!
    
    // General Information about an assembly is controlled through the following 
    // set of attributes. Change these attribute values to modify the information
    // associated with an assembly.
    [assembly: AssemblyTitle("WebForm")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("WebForm")]
    [assembly: AssemblyCopyright("Copyright ©  2014")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
    [assembly: AllowPartiallyTrustedCallers()]   // note!

    4.为控件类创建一个唯一的GUID,注意这里的GUID不能和AssemblyInf中的GUID相同,生成GUID的方法如下

    使用Microsoft Windows SDK Tools中的GUID Generator生成新的GUID,如图

    COPY生成的GUID到记事本,再拷贝GUID的字符串到控件类,并添加引用 using System.Runtime.InteropServices;

    using System.Runtime.InteropServices;    // note !

    namespace
    WebForm { [Guid("575483BC-7224-44F5-A77C-78AB7FC4E606")] // note! public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } } }

    第二部分,打包发布ActiveX控件

    5.ActiveX控件可以使用VS 2010的安装项目进行部署,使用VS 2010创建Windows Form的安装工程就可以将ActiveXdll进行打包。在打包时注意将ActiveX控件项目作为主输出项目,并设置其Register属性为vsdrpCOM,创建打包项目如下图5所示:

    之后添加项目输出,如下图

    6.设置项目属性,如下图,文件名就是打包后安装文件.MSI的文件名。设置包文件、压缩方式,CAB size,这三项均选择默认值即可。

    最后设置安装URL,这里的安装URL是用来发布或者测试ActiveXURL地址的,我们设置为本地url:K:/VSProject/WebForm/Setup/Debug/

    7. 将之前的WebForm.dll打包进ActiveX控件。

    将WebForm.dll放入包中,如下图,build solution之后,便会出现Setup.exe和Setup.msi两个文件,其中Setup.exe就是我们在使用ActiveX时的codebase文件。

    8.测试基于WinForm的ActiveX控件。新建一个htm文件,输入如下代码并保存:

    其中id为建立的控件类名,classid为步骤中生成的Guid,codebase为本地的ActiveX安装源,如果做服务器可以修改为ip源等,这里暂不赘述。

    <object id="UserControl1" 
            classid="clsid:575483BC-7224-44F5-A77C-78AB7FC4E606" 
            width="500"
            height="500" 
            codebase="K:/VSProject/WebForm/Setup/Debug/Setup.exe">
    </object>

    测试结果

    如图,由C#创建的基于WinForm的控件可以正确的显示在IE Explorer中

     

    参考资料

    http://www.cnblogs.com/yungboy/archive/2011/01/10/1932433.html

    http://homer.cnblogs.com/archive/2005/01/26/97822.aspx

    http://www.cnblogs.com/Charles2008/archive/2010/04/11/1709844.html

    http://www.cnblogs.com/homer/archive/2005/01/04/86473.html

    http://www.cnblogs.com/homer/archive/2005/01/08/88780.html

    http://www.cnblogs.com/homer/archive/2005/01/08/88780.html

  • 相关阅读:
    解决Tomcat9打印台乱码问题
    分治思想与归并排序
    linux下libuv库安装教程
    Linux init
    栈和堆上的内存分配和回收
    Python帮助文档中Iteration iterator iterable 的理解
    Qt基本框架介绍
    PyQt5+Python3.5.2-32bit开发环境搭建
    常用网站
    [Repost]Events and Signals in PyQt4
  • 原文地址:https://www.cnblogs.com/lvpengms/p/3555107.html
Copyright © 2011-2022 走看看