By: Imran Nathani
翻譯:veryhappy(wx.net)
ActiveX控件支援自定義程式接口。利用這種方法,外部可以通路控件的事件和屬性,Web開發者可以自動操作他們的Web頁面,等同于一般的桌面應用的功能。
介紹
作為一個Web應用程式開發者我們想提供給我們的使用者具有更強功能的應用程式。我們想為使用者通過腳本提供像列印流,本地Socket程式,本地線程這樣功能的程式,但是正如我們所知由于任何标準浏覽器出于Internet斷連結構和安全限制,完成這樣的任務十分困難。還好有了ActiveX帶來了實作的可能。
用C#編寫ActiveX類
先寫一個包含所有方法屬性定義的接口ASignatures。通過在浏覽器中執行JavaScript來通路這些方法或屬性。接口中所有成員是抽象并公開的。ActiveX類Aclass繼承自這個接口。在ActiveX類上我們必須指名其ClassInterfaceType是AutoDal(*注:訓示自動為類生成雙重接口并向COM公開。為該類接口生成類型資訊并在類庫中釋出)。一般AutoDual是不被推薦使用的因為它有版本限制。我們這裡采用隻是出于學習的目的。在類中我們寫兩個方法Fname()和Sname()和一個屬性Age。在例子中傳回基本資料類型,其實它也可以實作更複雜的資料類型。
using System;
using System.Runtime.InteropServices;
namespace ANamespace
{
public interface ASignatures
string FName();
string SName();
int Age { get;}
}
[ClassInterface(ClassInterfaceType.AutoDual)]
public class AClass :ASignatures
public string FName()
return "Very";
public string SName()
return "Happy";
public int Age
get { return 24; }
編譯ActiveX控件
對那些不知道如何在Visual Studio IDE外編譯的,你必需找到C#編譯器 csc.exe在下列檔案夾中:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx
把你的Aclass.cs檔案在放在csc.exe這個檔案夾中。進入指令行中執行如下指令:
csc /t:library AClass.cs
用戶端注冊元件
你可以通過多種途徑注冊元件。例如:建立安裝檔案或者自解壓檔案可以迅速的從浏覽器中下載下傳。我們的示例簡單的在用戶端指令行模式進行注冊。在相同的檔案夾下執行下面指令:
regasm AClass.dll /tlb /codebase
必須确定用戶端已經安裝了.NET Framework。
使用ActiveX控件
通過JavaScript建立ActiveX控件,調用方法和屬性,傳回的值顯示在對話框中。下面代碼告訴我們如何通路ActiveX控件的屬性和方法。
<html>
<head>
<script language="javascript">
<!-- 讀取 ActiveX 對象 -->
var x = new ActiveXObject("ANamespace.AClass");
<!-- 通路方法 -->
alert(x.FName());
alert(x.SName());
<!-- 通路屬性 -->
alert(x.Age);
</script>
</head>
<body>
</body>
</html>
在Internet Explorer中運作(*注:需要在本地安全設定中啟用“對未标記為可安全執行腳本的ActiveX初始化并執行腳本”),如果是FireFox或者Safari浏覽器則需要API的插件。
本文轉自鋼鋼部落格園部落格,原文連結:http://www.cnblogs.com/xugang/archive/2007/07/02/802864.html,如需轉載請自行聯系原作者