vs2010+WIN7 开发ActiveX控件


这里制作一个简单的ActiveX控件

 

第一步:新建一个Windows窗体控件库项目,如下图

第二步:编写UserControl功能

第三步:设置项目属性。右键“项目-->属性”,在弹出的对话框中勾选使程序集COM可见,如下图

再在上步对话框的生成中勾选为COM互操作注册,如下图

第四步:修改AssemblyInfo.cs和控件类.cs文件

AssemblyInfo.cs

先添加using System.Runtime.InteropServices引用

添加一下内容:[assembly: AllowPartiallyTrustedCallers()]

注销[assembly: Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]

完成后内容如下:

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

// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AllowPartiallyTrustedCallers()]
[assembly: AssemblyTitle("WinActiveXControlLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WinActiveXControlLib")]
[assembly: AssemblyCopyright("Copyright ©  2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(true)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
//[assembly: Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]

// 程序集的版本信息由下面四个值组成:
//
//      主版本
//      次版本 
//      内部版本号
//      修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

UC.cs文件-----自己的控件类cs文件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;


namespace WinActiveXControlLib
{
    [Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]//AssemblyInfo.cs中注释掉的GUID可以直接搬过来  主要是添加这一句 以备后续调用该com
    public partial class UC : UserControl
    {
        public UC()
        {
            InitializeComponent();
        }

        private void UC_Load(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)  //功能函数
        {
            this.textBox1.Text = "Hello 你好";
        }
    }
}

 

第五步:在项目下添加html或者aspx页面

代码如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title></title>
        <style type="text/css">
            #WinActiveX {
                height: 107px;
                width: 370px;
            }
        </style>
    </head>
    <body>
        <object id="WinActiveX" classid="clsid:AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B"  >  
    </object>
    </body>
</html>

在上面的html代码中,要特别注意classid属性,其值必须是 "clsid:AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B"  注意前面的clsid必须要有

AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B为UC.cs中的   [Guid("AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B")]值

生成解决方案,在IE中浏览Default.htm页面,如下图

 

 

PS:这只是一个最简单的ActiveX制作

复杂一点的还需要实现IObjectSafety接口(网上有资料),还可以直接生成安装项目exe给其他web项目调用,这里不再赘述

 

参考:

http://www.cnblogs.com/zhangs1986/archive/2013/01/18/2866734.html

http://neville.liu.blog.163.com/blog/static/49938781201145103613988/

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM