在 IE 中使用 Windows 窗體控件
根據在線監測項目需要,要求實現在IE中運行SmartClient程序,而且需要能夠和客戶端的JavaScript進行交互。
在.NET SDK的文檔中有相關內容描述如下:
- IE 內的Windows窗體控件無需用戶提示即可激活,它不要求注冊,而且遵守公共語言運行庫 (CLR) 代碼訪問安全性法則;
- 在 IE 中幾乎可以承載任何Windows窗體控件,該控件必須被安裝到全局程序集緩存(GAC)或者與使用它的Web頁面位于相同的虛擬目錄中;
- IIS虛擬目錄的執行權限必須為純腳本,否則將無法激活要使用的控件。
在 IE 中運行Windows窗體控件,需要如下步驟:
- 創建Windows窗體控件:
新建Windows 控件庫項目,和普通的控件庫一樣。 - 創建引用該Windows窗體控件Html文檔:
在Html文檔中加入object標記,該標記引用Windows窗體控件例如:
<object id="smartClient1" classid="http:ClientLib/SmartClientLib.dll#SmartClientLib.UserControl1"
width="300" height="300">
<param name="Text" value="Simple Control">
</object>
最重要的就是classid,包括指向控件庫的相對路徑和控件的完全限定名,與ActiveX的object標記不同的是Windows窗體控件不需要guid,在Windows窗體控件中,路徑和完全限定類名將作為唯一的標識;也可以param標記,設置控件上的屬性,name表示屬性的名稱,value表示屬性的值;也可以通過JavaScript腳本訪問控件的公開的屬性、方法。 - 創建虛擬目錄并設置權限:
如上所述,設置網頁所在虛擬目錄的權限,并部署Windows窗體控件。 - 運行該控件:
啟動 IE 瀏覽網頁,Windows窗體只能夠在 IE 瀏覽器中運行,不能夠在其它的瀏覽器中運行。
注意:如果用VS2005編譯,出現窗體控件不能夠正常顯示,或者不能和客戶端JavaScript腳本進行交互訪問,將所有的Windows窗體控件代碼復制到一個文件中,用.NET附帶的命令行工具csc/vbc進行編譯,則可以正常顯示,不知是怎么回事。
張志敏所有文章遵循創作共用版權協議,要求署名、非商業 、保持一致。在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。
本博客已經遷移到 GitHub , 圍觀地址: https://beginor.github.io/
浙公網安備 33010602011771號