在WEB下的客戶端控件的開發(fā)應(yīng)用
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
1. Visual Basic中ActiveX控件的制作
ActiveX是Microsoft的術(shù)語,它是一組包括控件、DLL和ActiveX文檔的組件,他通常是以動態(tài)連接庫形勢存在,因此必須在一個叫容器的可獨立執(zhí)行的軟件中運行,比如VisualBasic,VisualC++,Internet Explorer等。因此ActiveX控件和容器必須都支持一些特定的接口協(xié)議。ActiveX應(yīng)包括屬性,事件和方法這些特殊機制,它也是創(chuàng)建ActiveX控件的核心。 從VisualBasic5.0開始,我們就可以用VB創(chuàng)建控件,VB6.0繼承了VB5.0的開發(fā)第三方控件的能力。創(chuàng)建ActiveX控件有一定的步驟: (1)確定控件將要實現(xiàn)的功能。這一步很重要,在這里我們應(yīng)該確定控件的外觀,以及它的屬性、事件和 方法。 (2)通過UserControl對象設(shè)計控件的外觀。 (3)將代碼添加到UserControl來實現(xiàn)控件的外觀和行為。 (4)設(shè)計控件的接口,即屬性、事件和方法。 (5)創(chuàng)建VB的Standard.EXE工程,利用他調(diào)試制作的控件。 (6)編譯控件部件,生成.ocx文件。(在"文件"菜單, 有"生成DataTimer.ocx"選項) 制作DLL文件的方法類似。 注冊控件的方法: 方法一、Regsvr32.exe注冊,Regsvr32.exe位于Windows目錄的system子目錄下。點擊Windows的"開始→運行"菜單,在對話框中輸入以下命令: regsvr32 netshare.ocx //注冊netshare.ocx控件 regsvr32 /u netshare.ocx //解除netshare.ocx控件的注冊 方法二、新建注冊文件,進(jìn)行添加右鍵注冊和解除的選項。 新建一TEXT文件,輸入以下內(nèi)容: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ocxfile\shell] [HKEY_CLASSES_ROOT\ocxfile\shell\注冊] [HKEY_CLASSES_ROOT\ocxfile\shell\注冊\command] @="regsvr32 %1" [HKEY_CLASSES_ROOT\ocxfile\shell\反注冊] "Command"="regsvr32 %1 /u" [HKEY_CLASSES_ROOT\ocxfile\shell\反注冊\command] @="regsvr32 %1 /u" 然后保存成REG文件,雙擊執(zhí)行,即完成添加此功能。 2.制作CAB Internet 包 VB6可以很方便的編寫OCX控件及DLL組件,要在網(wǎng)站中使用DLL組件的使用很簡單,直接在ASP中使用Server.CreateObject("工程名.組件名")可以在服務(wù)器端調(diào)用該組件。而OCX使用則因為需要下載到客戶端而變得復(fù)雜些,要打包成CAB文件進(jìn)行調(diào)用。CAB文件是一種WINDOWS的標(biāo)準(zhǔn)壓縮格式文件,在網(wǎng)頁上發(fā)布ActiveX的時候經(jīng)常使用該壓縮格式對文件進(jìn)行包裝,目的是使文件便于在Internet上傳輸。 創(chuàng)建CAB文件的方法有很多,以下是應(yīng)用VB6實現(xiàn)打包。 OCX打包成internet包步驟: ?。?)啟運打包程序:菜單"外接程序"-》"外接程序管理器"-》啟用"打包和展開向?qū)? ?。?)開始打包:菜單"外接程序"-》"打包和展開向?qū)?,打包成internet包:選"打包",在選擇包類型時選"internet軟件包".... 在CAB包中可以包括所有此控件中使用到的DLL文件。 除了在VB6中進(jìn)行打包外,還可以在Microsoft visual studio .Net 2003中"創(chuàng)建CAB項目"。 對單一的OCX文件打包,也可以用WINDOWS自帶的iexpress.exe(c:\windows\system32目錄下),在開始菜單->運行里輸入iexpress。 3.為CAB進(jìn)行簽名 通過Microsoft的驗證代碼工具,可以對ActiveX控件進(jìn)行簽名,這告訴用戶你的確是控件的作者而且沒有他人篡改過這個控件; 為了使用驗證代碼工具對組件進(jìn)行簽名,必須從證書授權(quán)機構(gòu)獲得一個數(shù)字證書;證書包含表明特定軟件程序是正版的信息,這確保了其他程序不能再使用原程序的標(biāo)識。證書還記錄了頒發(fā)日期。當(dāng)您試圖下載軟件時,Internet Explorer 會驗證證書中的信息,以及當(dāng)前日期是否在證書的截止日期之前。如果在下載時該信息不是最新的和有效的,Internet Explorer 將顯示一個警告; 在IE默認(rèn)的安全級別中,ActiveX控件安裝之前,用戶可以根據(jù)自己對軟件發(fā)行商和軟件本身的信任程度,選擇決定是否繼續(xù)安裝和運行此軟件。 網(wǎng)絡(luò)實名插件使用了國際權(quán)威安全廠商Verisign所頒發(fā)的數(shù)字證書進(jìn)行簽名,因此可以確保網(wǎng)絡(luò)實名插件的真實性和安全性。 使用Microsoft visual studio .Net 2003開發(fā)工具。所以你必須擁有Microsoft visual studio .Net 2002以上版本的環(huán)境。 1、 獲得軟件發(fā)行證書 第一步:開始菜單->運行,輸入cmd.exe。打開windows 2000的命令提示符環(huán)境窗口。 第二步:輸入CD C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin,進(jìn)入該目錄,用dir命令你可以看到signcode.exe、makecert.exe和cert2spc.exe程序。注意:以上路徑根據(jù)你機器Microsoft.Net的安裝路徑不同而異。 第三步:創(chuàng)建用于數(shù)字簽名的公鑰和私鑰對,并將其存儲在證書文件中。 輸入makecert -sk FortuneAge -n "CN=FortuneAge COMPANY" c:\FortuneAge.cer。 就會在你的C:生成 FortuneAge.cer文件。 說明:參數(shù)-n指定主題的證書名稱。此名稱必須符合 X.500 標(biāo)準(zhǔn)。最簡單的方法是在雙引號中指定此名稱,并加上前綴 CN=;例如,"CN=myName"。注意這里的CN必須大寫。-sk指定主題的密鑰容器位置,該位置包含私鑰。如果密鑰容器不存在,系統(tǒng)將創(chuàng)建一個。輸入makecert -?可以查看其他參數(shù)的用法。 第四步:創(chuàng)建發(fā)行者證書 (SPC)。 注意,發(fā)行者證書測試工具通過一個或多個 X.509 證書創(chuàng)建發(fā)行者證書 (SPC)。Cert2spc.exe 僅用于測試目的。可以從證書頒發(fā)機構(gòu)(如 VeriSign 或 Thawte)獲得有效的 SPC。 輸入命令:cert2spc c:\FortuneAge.cer c:\FortuneAge.spc,在C:盤生成證書文件。至此,你已經(jīng)擁有了僅用于測試的軟件證書。其實,我們開發(fā)的程序或ActiveX控件只要僅用于企業(yè)內(nèi)部,完全可以用這種辦法作數(shù)字簽名,使你的控件可以在瀏覽器里自動下載,而不必去專門的證書辦法機構(gòu)獲得證書。 第五步:在上面打開的dos窗口里,輸入如下命令:signcode /spc c:\FortuneAge.spc /k WHX c:\scan.cab。至此,已經(jīng)對成功對can.cab文件簽名??梢圆榭次募膶傩裕榭磾?shù)字簽名。 4.在WEB上的調(diào)用 在HTML頁面中使用ActiveX控件包含三個基本操作:將控件放入HTML中;將該控件下載給用戶;在用戶機器上安裝該控件。如果只是針對IE用戶,在HTML中插入ActiveX控件就比較簡單;如果同時兼顧IE和Netscape用戶,則要做更多工作。大家知道,HTML文件由文本和各種標(biāo)志(tags)組成,ActiveX 控件對于IE在HTML中的標(biāo)志是<OBJECT>,該標(biāo)記有幾個重要的參數(shù)特性,它們是: 1.ID:為控件提供一個標(biāo)識名稱,為HTML代碼提供一種訪問該控件的方式。 2.CLASSID:是該控件唯一的UUID,告訴IE裝入哪個對象。如果使用已經(jīng)開發(fā)好的控件,它的CLASSID可以通過調(diào)用Win95或NT下的應(yīng)用Regedit來查找。從開始菜單中運行該程序,展開HKEY_CLASSES_ROOT項,可以看到按字母順序排列的注冊表,找到需要使用的控件名,例如WClnt,展開時可看到一個CLSID文件夾,里面就是該控件的CLASSID。 如果是自己用VC開發(fā)控件,該UUID可以在ActiveX控件項目中的ODL(對象描述庫)文件中找到;通過查看控件的類信息注釋來定位特定控件的UUID,例如,要找到CMyControl控件的UUID,則需要找到以下代碼: // Class information for CMyControl [uuid (051C4748-1262-11D2-87C1-00A024D948FB), licensed, helpstring("CmyControl Control"), control ] uuid后面括號中的內(nèi)容就是該控件的UUID。 3.CODEBASE:如果在用戶機器上沒有控件的當(dāng)前版本,該參數(shù)告訴用戶瀏覽器在哪里可找到要下載的控件和最新版本號.當(dāng)控件作了修改后,可以更改版本號強制用戶重新下載。 4.PARAM:該標(biāo)記用于設(shè)置控件的初始屬性值,它有兩個特性:Name和Value,即屬性名稱和屬性值。 此外還有一些標(biāo)記,如:Width表示該控件所占的寬度,Height表示高度等,總體來說,這樣一個插入控件的HTML代碼和插入Java Applet的HTML代碼非常相似。 下面是一個嵌有ActiveX控件的HTML代碼示例: <OBJECT ID="CMyControl" CLASSID="clsid:051C4748-1262-11D2-87C1-00A024D948FB" CODEBASE="http://www.mysite.com.cn/ocxdir/mycontrol.ocx#version=1,0,0,1" WIDTH=400 HEIGHT=200 ALIGN=center HSPACE=0 VSPACE=0 > </OBJECT> CODEBASE的設(shè)置中,若CAB文件與該WEB文件保存在同一目錄下,只需寫其文件名即可,即CODEBASE="mycontrol.ocx#version=1,0,0,1";#號代表此控件的版本,如果版本不同,客戶端的瀏覽器自然會下載更新。 如果希望控件還能在Netscape中運行,除了Netscape需加裝插件外,HTML也要加一些附加標(biāo)記,下面的例子中EMBED段就是為Netscape加上的。如果使用MFC開發(fā)OCX控件,則少數(shù)用戶第一次訪問時除了下載OCX文件外,還要下載相應(yīng)的MFC DLL,下載量變大,這時可將相關(guān)文件在服務(wù)器端打包成可以在客戶端自解壓安裝的CAB文件。經(jīng)過修改后的HTML代碼段如下: <ALIGN="CENTER" CLASSID="clsid: 7BCA18C6-2178-11D2-87C1-00A024D948FB" WIDTH="1200" HEIGHT="900" ID="marquee" CODEBASE="http://218.168.188.188/scadaweb/WClnt.cab#version=1,0,0,1"> <EMBED ALIGN="CENTER"CLASSID="clsid:7BCA18C6- 2178-11D2-87C1-00A024D948FB" WIDTH="1200" HEIGHT="900" ID="marqueequot;" CODEBASE="http://218.168.188.188/scadaweb/ WClnt.OCX#version=1,0,0,1" TYPE="application/oleobject"> 5.結(jié)束語 在WEB中開發(fā)控件的大致流程已公布,但它的設(shè)計和實現(xiàn)方法多種多樣。WEB控件的制作的針對方向為在客戶端的服務(wù),如客戶端打印、掃描等功能。若果是提供服務(wù)器端的控件調(diào)用,可以研究一下WEBSERVER。 該文章在 2011/3/11 23:16:26 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |