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