vs2010 使用C#制作ActiveX

之前只是接触过ActiveX控件的使用,并不知ActiveX控件是怎么生成的。现在因为项目需要,记录一下ActiveX的制作过程。(部分参考 另一篇博客http://www.cnblogs.com/yungboy/archive/2011/01/10/1932433.html

1.创建Windows窗体控件库,项目取名为ActiveX(创建解决方案不再赘述)

2.在ActiveX项目上右键->属性->应用程序选项->程序集信息,勾选最下面的“使程序集COM可见”,点击确定

3.仍然是ActiveX项目的属性->生成,勾选最下面的“为COM互操作注册”

(注意Debug和Release模式,使用哪种模式就将哪种模式下的“为COM互操作注册”勾选)

4.打开ActiveX项目Properties->AssemblyInfo.cs文件,添加using System.Security;引用,添加[assembly: AllowPartiallyTrustedCallers()]代码

5.为项目添加用户控件,ActiveX项目右键->添加->用户控件,取名demo

设计demo界面如下

为button1添加Click事件

private void button1_Click(object sender, EventArgs e)
{
     MessageBox.Show(this.textBox1.Text);
}

用户控件设计基本完成,ActiveX的引用需要用到Guid,下面我们来生成Guid

1.vs2010菜单栏->工具->创建GUID

(我的项目的GUID为[Guid("3509DA26-0480-4CB5-B791-15FB6C1B7FAC")],下面以此为例,上图仅供参考)

2.为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口

直接复制下面代码即可,注意其中的Guid不需要修改,且需要添加using System.Runtime.InteropServices;引用

  [ComImport, Guid("1D9AD540-F2C9-4368-8697-C4AAFCCE9C55")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IObjectSafety
    {
        [PreserveSig]
        void GetInterfacceSafyOptions(
        int riid,
        out int pdwSupportedOptions,
        out int pdwEnabledOptions);

        [PreserveSig]
        void SetInterfaceSafetyOptions(
        int riid,
        int dwOptionsSetMask,
        int dwEnabledOptions);
    }

3.修改demo控件类继承IObjectSafety接口,代码如下

  [Guid("3509DA26-0480-4CB5-B791-15FB6C1B7FAC")]
    public partial class demo : UserControl,IObjectSafety
    {
        public demo()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(this.textBox1.Text);
        }

        public string str()
        {
            return this.textBox1.Text;
        }
        #region IObjectSafety 成员

        public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)
        {
            pdwSupportedOptions = 1;
            pdwEnabledOptions = 2;
        }

        public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

 至此,ActiveX控件基本完成,下面打包ActiveX

1.解决方案创建安装工程

2.查看安装项目的文件系统,点击应用程序文件,在右侧右键添加项目输出,选择刚才创建的ActiveX项目,选择主输出

3.创建项目输出之后,应用程序文件的右侧栏中,选择主输出右键属性窗口,设置Register为vsdrpCOM

4.设置完成之后,生成安装工程Setup1,应用程序文件右侧将有两个文件,如下

这样打包文件生成了,Debug目录下有两个文件,exe文件和msi文件,如果想生成cab文件,则可以网上查询下如何生成cab文件(需要借助别的工具)

至此ActiveX的打包工作已经做完,下面我们来使用这个ActiveX控件

1.创建一个Web项目WebApplication1,然后再Default.aspx页面添加对ActiveX控件的引用,其中clsid为上面生成的GUID

<object id="helloworld" classid=‘clsid:3509DA26-0480-4CB5-B791-15FB6C1B7FAC‘ width="184" height="150" ></object>

页面如下

另外,除了单纯的使用ActiveX控件,可能还需要利用Js手动调用ActiveX的方法,上面demo.cs的代码中,我定义了一个公开的str方法,web页面利用Js调用str方法,如下

<script type="text/javascript">
    function aa() {
    alert(document.getElementById(‘Object1‘).str());
    }
</script>
<object id="helloworld" classid=‘clsid:3509DA26-0480-4CB5-B791-15FB6C1B7FAC‘ width="184" height="150" ></object>
<object id="Object1" classid=‘clsid:3509DA26-0480-4CB5-B791-15FB6C1B7FAC‘ width="0" height="0" ></object>
<input type="button"  value="点击" onclick="aa()"/>

请注意两个ActiveX的id和宽高是不一样的,页面如下

OK,C#制作ActiveX控件以及web引用和Js简单调用记录完成,希望可以帮助有需要的小伙伴,同时也方便自己日后查看。(*^__^*)

这个亲测有效,本人系统环境 win10 64位,开发工具vs2010,.NET Framework 4.0

初步了解,涉及较浅,部分参考 另一篇博客http://www.cnblogs.com/yungboy/archive/2011/01/10/1932433.html

如转载请注明出处http://www.cnblogs.com/wyynts/p/6874387.html,谢谢

时间: 2024-08-08 14:17:10

vs2010 使用C#制作ActiveX的相关文章

VS2010安装包制作过程

1.新建一个安装项目. 2.添加项目输出 . 3.点击项目名称setup1,可在属性列表中设置各属性,可设置author(作者),manufacturer(公司名称)productname(产品名称) 4.点击“用户的“程序”菜单”,在右边的空白处点击创建快捷方式. 5.生成安装包 并指向主输出. 6.可在上面菜单中进行安装和卸载操作. VS2010安装包制作过程

C#制作ActiveX浏览器插件.net

开发环境:VS2008 第一步 创建项目 新建一个项目,选择“Windows窗体控件库”,创建一个用户控件项目“ActiveXDemo”(注意,这里起名不能用中文,否则后面会出问题),里面有个用户控件类UserControl1.cs 在类中写上你自己需要的业务逻辑代码,保存 第二步 设置项目属性 在AssemblyInfo.cs里添加[assembly: AllowPartiallyTrustedCallers()],需要引用using System.Security;命名空间 设置项目属性,右

C#制作ActiveX控件及部署升级(摘自网络)

使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是用C++或VB语言开发,本文介绍另一种方式,在.NET Framework平台上,使用C#语言开发ActiveX控件. 虽然本文通篇都在讲如何使用C#语言开发ActiveX控件,但我并不极力推荐使用这种技术,因为该技术存在明显的局限,即需

C#制作ActiveX控件中调用海康SDK的问题

这个事情就是一个坑,耽误了两周时间,之前并没有做过ActiveX这玩意,现在客户需求如此,只能说是在网上看着教程做了. 事情是这样的,有一台海康威视的摄像头,客户需要一个ActiveX控件嵌入到网页中,通过点击按钮开始录制和结束录制来进行视频的录制和保存,关于海康摄像头的二次开发在此就不多说了,可以参考SDK中的说明. 直接上流程: 1.开发环境: VS2010,这个打包方便,之前用VS2013打包的,总是调用不了,不知道原因是什么:SDK是32位的,用64位的在Winform中可以正常使用,在

VS2010安装包制作

最近对软件安装包制作研究了一下,下面记录了一种比较简单,不用写代码的方法. 1.New Project---->Other Project Types ---->Visual Studio Installer---->Setup Project 命名为:Install 这时在VS2010的File System栏里中将有三个文件夹, 1.“Application Folder”表示要安装的应用程序需要添加的文件: 2.“User's Programs Menu”表示:应用程序安装完,用户

VS2010安装包制作全过程图解

项目的第一个版本出来了,要做个安装包,很久没做过已经有些淡忘了,网上差了差资料,写了一个,总结下,可能还不是很完善,仅作参考. 1.首先在打开 VS2010    >新建>项目 2.创建一个安装项目  Setup1 在"目标计算机上的文件系统"下我们看见    应用程序文件夹,用户程序菜单,用户桌面, 在 应用程序文件夹  右击添加文件夹(即安装后所在安装路径下生成的包含程序相关组件的文件夹) 3.本程序中添加了 Biomer  ,在  Biomer    上右击  ,选择

C# 制作ActiveX控件并添加到网页

1.创建ActiveX控件--按钮 2.定义一个接口,并在控件中实现 3.部署安装 4.CAB打包 5.添加到网页中进行测试 一. 创建ActiveX控件--按钮 1.新建一个Window窗体控件库项目,命名为ActiveXDemo. 2.在自动生成的UserControl1页面上添加一个button 3.点击事件里我们只弹出一个MesageBox [csharp] view plain copy private void button1_Click(object sender, EventAr

C#制作、打包、签名、发布Activex全过程

一.前言       最近有这样一个需求,需要在网页上面启动客户端的软件,软件之间的通信.调用,单单依靠HTML是无法实现了,因此必须借用Activex来实现.由于本人主要擅长C#,自然本文给出了用C#实现的范例,本文的预期效果是有一定Winform基础的人可都轻松读懂本文. 文章主要介绍了以下几个部分: 1.用C#制作Activex控件,并发布为msi安装文件 2.将msi打包为cab,达到浏览器自动安装的效果 3.给cab数字签名(可选) 4.将Activex应用到网页上 二.用C#制作Ac

C#制作、打包、签名、发布Activex全过程【转】

http://www.cnblogs.com/still-windows7/p/3148623.html 一.前言 最近有这样一个需求,需要在网页上面启动客户端的软件,软件之间的通信.调用,单单依靠HTML是无法实现了,因此必须借用Activex来实现.由于本 人主要擅长C#,自然本文给出了用C#实现的范例,本文的预期效果是有一定Winform基础的人可都轻松读懂本文. 文章主要介绍了以下几个部分: 1.用C#制作Activex控件,并发布为msi安装文件 2.将msi打包为cab,达到浏览器自