程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 開發ActiveX控件及制作CAB包

開發ActiveX控件及制作CAB包

編輯:C#入門知識

一個項目要用到ActiveX控件,參照網上眾多的例子,ActiveX控件倒是很容易就搞出來了;
然後做了一個【安裝項目】,倒是可以使用,只不過需要在客戶端手動點擊安裝,下一步,下一步…覺得不是很爽;
又試了試【CAB項目】,好像沒人用VS2008來做,費了點功夫,終於找到解決辦法。
特將此經驗與大家分享。

開發工具:Visual Studio 2008
.NET版本:2.0
開發語言:C#

一、編寫ActiveX控件
1、新建一個【Windows窗體控件庫項目】
\

2、添加一個【用戶控件】
添加用戶控件

3、拖兩個Label控件到界面上
拖兩個Lable控件

4、為控件添加一個方法,用來設置在Label中顯示當前時間

 

/// <summary>
/// 設置當前時間
/// </summary>
/// <param name="timeStr"></param>
public void SetTime(string timeStr)
{
this.label2.Text = timeStr;
}

 

 

 

5、新建一個接口:
據說實現該接口的目的就是提高程序的安全性,以便客戶端IE在不更改設置的情況下可以預行該ActiveX控件。
關於這個有篇文章,推薦大家看看:

http://blog.csdn.net/optman/archive/2007/07/18/1698070.aspx

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace HelloBossma
{
[ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
[PreserveSig]
int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);

[PreserveSig()]
int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
}
}

6、讓我們的控件實現這個接口
關於實現這個接口,篇幅較長,可以在這篇文章找到:

http://www.pinvoke.net/default.aspx/Interfaces/IObjectSafety.html

7、為我們的控件添加Guid、ProgId和ComVisible屬性

 

namespace HelloBossma
{
[Guid("636B8CE1-7512-464C-B63C-FC75BDCA21DB"), ProgId("HelloBossma.HelloBossmaActiveX"), ComVisible(true)]
public partial class HelloBossmaActiveX : UserControl, IObjectSafety
{
...
}
}

 

 

 

8、打開項目屬性,在生成裡邊,勾選【為Com互操作注冊】
Com互操作注冊

9、生成項目,進入到binRelease目錄下可以看到
HelloBossma.dll
HelloBossma.tlb
這兩個文件時必須的,否則生成不成功。

 

 

 

 

二、制作ActiveX Setup安裝文件
1、新建一個安裝項目
安裝項目

2、在項目上點右鍵,【添加】->【項目輸出】,選擇上邊的項目
安裝項目輸出

3、打開安裝項目的屬性頁面,設置安裝URL
這裡設置為:http://localhost/hellobossma
這個目錄必須是實際存在的,用來存放生成的安裝文件,供客戶端下載安裝。

4、生成項目
會生成兩個文件,一個exe文件和一個msi文件

5、新建一個網站,添加如下代碼到網頁中。
其中classid即為控件的Guid。