qingkuangs 发表于 2015-5-19 10:03:47

vs2010+WIN7 开发ActiveX控件

  这里制作一个简单的ActiveX控件
  
  第一步:新建一个Windows窗体控件库项目,如下图

  第二步:编写UserControl功能
  
  第三步:设置项目属性。右键“项目-->属性”,在弹出的对话框中勾选使程序集COM可见,如下图
  
  再在上步对话框的生成中勾选为COM互操作注册,如下图

  第四步:修改AssemblyInfo.cs和控件类.cs文件
  AssemblyInfo.cs
  先添加using System.Runtime.InteropServices引用
  添加一下内容:
  注销
  完成后内容如下:



using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。









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

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
//
// 程序集的版本信息由下面四个值组成:
//
//      主版本
//      次版本
//      内部版本号
//      修订号
//
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
//


  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
{
//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页面
  代码如下








#WinActiveX {
height: 107px;
width: 370px;
}







  在上面的html代码中,要特别注意classid属性,其值必须是 "clsid:AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B"注意前面的clsid必须要有
  AA47BB4C-2FED-4CEA-AF3B-8AB832EABB2B为UC.cs中的   值
  生成解决方案,在IE中浏览Default.htm页面,如下图

  
  
  PS:这只是一个最简单的ActiveX制作
  复杂一点的还需要实现IObjectSafety接口(网上有资料),还可以直接生成安装项目exe给其他web项目调用,这里不再赘述
  
  参考:
  http://www.iyunv.com/zhangs1986/archive/2013/01/18/2866734.html
  http://neville.liu.blog.163.com/blog/static/49938781201145103613988/
  等
  
  
页: [1]
查看完整版本: vs2010+WIN7 开发ActiveX控件