Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

tag 標(biāo)簽: 腳本

相關(guān)日志

分享 Windows 腳本組件技術(shù)(轉(zhuǎn))
熱度 1 zhuyiwen 2016-5-4 09:36
Windows 腳本組件技術(shù)為開(kāi)發(fā)者提供了用腳本語(yǔ)言創(chuàng)建功能強(qiáng)大、可復(fù)用的 COM 組件的簡(jiǎn)便方式。開(kāi)發(fā)者可以使用任何支持 Microsoft ActiveX Scripting 接口的腳本語(yǔ)言來(lái)創(chuàng)建腳本組件,支持這些接口的腳本語(yǔ)言有 JScript、VBScript 和 PERLScript 等。使用腳本組件可以為多種任務(wù)創(chuàng)建 COM 組件,如訪問(wèn)和操作數(shù)據(jù)庫(kù)數(shù)據(jù)、給應(yīng)用程序添加事務(wù)處理以及使用 DHTML Behavior 給 Web 頁(yè)添加交互效果等。 1、腳本組件技術(shù) 1.1 腳本組件的運(yùn)行 腳本組件的運(yùn)行涉及三個(gè)方面內(nèi)容:腳本組件運(yùn)行時(shí)程序(Scrobj.dll),接口處理程序和腳本組件文件(擴(kuò)展名為.wsc)。 (1) 腳本組件運(yùn)行時(shí)程序(Scrobj.dll)用來(lái)幫助將 COM 請(qǐng)求發(fā)送到腳本組件。Scrobj.dll是主機(jī)應(yīng)用程序的入口點(diǎn)并作為腳本組件的 inproc 服務(wù)器執(zhí)行。 (2) 接口處理程序是已經(jīng)編譯好的實(shí)現(xiàn)特定 COM 接口的組件。復(fù)雜的 COM 組件可以包括多個(gè)接口的實(shí)現(xiàn)。最常使用的接口處理程序包括 COM Automation 接口處理程序、ASP 接口處理程序以及用于 DHTML Behavior 的處理程序。這些處理程序都已內(nèi)置于腳本組件運(yùn)行時(shí)程序中,其它處理程序可作為外接組件或嵌在相關(guān)的應(yīng)用程序中。 其中,Automation 組件是最常用的 COM 組件類型,該組件擁有屬性和方法,其它應(yīng)用程序可以調(diào)用這些屬性和方法。實(shí)現(xiàn)這些功能所必需的低層次 COM 接口都內(nèi)置于 Automation 接口處理程序中。在腳本組件文件中只需定義需要說(shuō)明的屬性、方法和事件,便可確保主應(yīng)用程序?qū)?Automation 處理程序的正確調(diào)用。 (3) 腳本組件文件屬于可擴(kuò)展的標(biāo)記語(yǔ)言(eXtensible Marked Language,簡(jiǎn)稱 XML)文件。用戶可遵循 XML 規(guī)則來(lái)開(kāi)發(fā)只包含簡(jiǎn)單函數(shù)功能的 COM,也可開(kāi)發(fā)包括外接組件的復(fù)雜 COM。 1.2 腳本組件文件的框架 Windows 腳本組件文件采用 XML 來(lái)編寫。XML 元素定義了腳本及其操作。 下面的示例演示了一個(gè)腳本組件文件的框架。 ?XML version="1.0"? package ?component error="true" debug="true"? component id="MyComponent" registration /registration reference object="progID" / public /public implements type=COMhandlerName id=internalName /implements script language="VBScript" /script /component /package 其中幾個(gè)主要腳本元素意義如下: (1) component 元素包含的是一個(gè)完整的腳本組件定義。在同一個(gè) .wsc 文件中可出現(xiàn)多個(gè) component 元素,但這些 component 元素應(yīng)包含在一個(gè) package 元素內(nèi)。 (2) registration 元素包括用來(lái)將腳本組件注冊(cè)為 COM 組件的信息。如果宿主應(yīng)用程序(如IE)在創(chuàng)建該腳本組件的實(shí)例時(shí)沒(méi)有直接用到 Windows 注冊(cè)表,則該元素可省略。 (3) script 元素包含用來(lái)實(shí)現(xiàn)腳本組件邏輯的腳本,這取決于所創(chuàng)建的 COM 組件類型。如果開(kāi)發(fā)者創(chuàng)建的是 COM Automation 組件,則可以在 public 元素中聲明屬性、方法和事件,然后用一個(gè)或多個(gè) script 元素編寫腳本來(lái)定義這些內(nèi)容。 (4) reference 元素引用在腳本中需要使用的類型庫(kù)。 1.3 腳本組件的使用 在 Windows 資源管理器中,用鼠標(biāo)右鍵單擊腳本組件(.wsc)文件,然后選擇“注冊(cè)”,或者使用 regsvr32.exe 注冊(cè)程序進(jìn)行注冊(cè): regsvr32 path\component_name.wsc 在創(chuàng)建和注冊(cè) Windows 腳本組件后,就可以像使用任何 COM 組件一樣,通過(guò)宿主應(yīng)用程序調(diào)用來(lái)使用該腳本組件。宿主應(yīng)用程序可以是 VB、C++、IE 等應(yīng)用程序。 根據(jù)宿主應(yīng)用程序和腳本組件類型,以及部署該腳本組件的位置,在創(chuàng)建腳本組件的實(shí)例時(shí)會(huì)有各種選項(xiàng)。其中最主要的差別是在本地還是遠(yuǎn)程創(chuàng)建腳本組件的實(shí)例。如: Set local = CreateObject("ConDB.wsc")' 實(shí)例化本地組件 Set remote= CreateObject("ConDB.wsc", "my_server")' 實(shí)例化遠(yuǎn)程組件 2、腳本組件應(yīng)用實(shí)例 編寫腳本組件不像使用 VC、VB 等高級(jí)語(yǔ)言編寫 COM 組件那樣需要復(fù)雜的集成開(kāi)發(fā)環(huán)境。開(kāi)發(fā)者只需要使用簡(jiǎn)單的文本編輯器就可以進(jìn)行腳本組件的開(kāi)發(fā)。 下面結(jié)合一個(gè)腳本組件實(shí)例(ConDB.wsc)簡(jiǎn)要闡述應(yīng)用腳本組件進(jìn)行系統(tǒng)業(yè)務(wù)開(kāi)發(fā)的過(guò)程。這個(gè)腳本組件將連接數(shù)據(jù)庫(kù)服務(wù)器,并打數(shù)據(jù)庫(kù)連接。 2.1 腳本組件文件 ConDB.wsc ?xml version="1.0"? component ?component error="true" debug="true"? registration desciption="ConDB" progid="ConDB.wsc" version="1.00" classid="{9247c2de-a42d-4755-aa60-8b14c1af6b4f}" /registration reference object="ADODB.Connection.2.8" / public method name="ConToDB" PARAMETER name="servername" / PARAMETER name="dbname" / PARAMETER name="user" / PARAMETER name="password" / /method /public implements type="ASP" id="ASP" / script language="VBScript" ! ] /script /component 2.2 應(yīng)用腳本組件 ConDB.wsc 創(chuàng)建和注冊(cè)腳本組件以后,開(kāi)發(fā)者就可以在 VC、VB、IE 等宿主程序中使用組件,如下是在 IE 中使用組件 ConDB.wsc 的一個(gè)例子。 %@language=vbscript% html body %Set db = CreateObject("ConDB.wsc.1.00") desc = db.ConToDB("(local)", "pubs", "sa", "sapwd") response.write desc % /body /html 開(kāi)發(fā)者除了可以像以上直接實(shí)例化組件對(duì)象使用腳本組件外,還可以為腳本組件生成一個(gè)類型庫(kù),該類型庫(kù)包括組件的接口和成員的信息。在有些宿主應(yīng)用程序(如VB)中,如果要給腳本組件編寫事件能力,則類型庫(kù)是必需的。使用類型庫(kù)可以將事件綁定到腳本組件上,并且在VB中可見(jiàn)。此外,在編寫腳本組件的相關(guān)VB代碼時(shí),對(duì)象瀏覽器中將出現(xiàn)類型庫(kù)信息,從而使開(kāi)發(fā)者能夠很方便地查看和使用腳本組件的方法、事件等成員、 開(kāi)發(fā)者可以像以下這樣為一個(gè)腳本組件生成類型庫(kù)。在 Windows 資源中,用鼠標(biāo)右鍵單擊腳本組件文件,然后選擇“生成類型庫(kù)”。這將為腳本組件生成一個(gè)與腳本組件文件名同名的 .tlb 文件,并在 Windows 注冊(cè)表中注冊(cè)。該文件將與腳本組件文件處于同一文件夾。 如果要更精確控制類型庫(kù)的生成,開(kāi)發(fā)者可以在腳本組件文件中動(dòng)態(tài)地生成類型庫(kù),或者也可以使用命令行接口,如下為腳本組件(ConDB.wsc)創(chuàng)建一個(gè)類型庫(kù)。 rundll32.exe c:\Windows\System32\scrobj.dll,GenerateTypeLib -name:ConDBLib -file:e:\component\ConDB.tlb -doc:\"ConDB component typelib\" -guid:{9247c2de-a42d-4755-aa60-8b14c1af6b4f} -major:1 -minor:0-URL:e:\components\ConDB.wsc 參見(jiàn): http://www.xav.com/perl/Windows/windows_script_components.html
個(gè)人分類: VBA|2887 次閱讀|1 個(gè)評(píng)論

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 21:51 , Processed in 0.066877 second(s), 15 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部