熱度 1||
Windows 腳本組件技術(shù)為開發(fā)者提供了用腳本語言創(chuàng)建功能強大、可復用的 COM 組件的簡便方式。開發(fā)者可以使用任何支持 Microsoft ActiveX Scripting 接口的腳本語言來創(chuàng)建腳本組件,支持這些接口的腳本語言有 JScript、VBScript 和 PERLScript 等。使用腳本組件可以為多種任務創(chuàng)建 COM 組件,如訪問和操作數(shù)據(jù)庫數(shù)據(jù)、給應用程序添加事務處理以及使用 DHTML Behavior 給 Web 頁添加交互效果等。
1、腳本組件技術(shù)
1.1 腳本組件的運行
腳本組件的運行涉及三個方面內(nèi)容:腳本組件運行時程序(Scrobj.dll),接口處理程序和腳本組件文件(擴展名為.wsc)。
(1) 腳本組件運行時程序(Scrobj.dll)用來幫助將 COM 請求發(fā)送到腳本組件。Scrobj.dll是主機應用程序的入口點并作為腳本組件的 inproc 服務器執(zhí)行。
(2) 接口處理程序是已經(jīng)編譯好的實現(xiàn)特定 COM 接口的組件。復雜的 COM 組件可以包括多個接口的實現(xiàn)。最常使用的接口處理程序包括 COM Automation 接口處理程序、ASP 接口處理程序以及用于 DHTML Behavior 的處理程序。這些處理程序都已內(nèi)置于腳本組件運行時程序中,其它處理程序可作為外接組件或嵌在相關的應用程序中。
其中,Automation 組件是最常用的 COM 組件類型,該組件擁有屬性和方法,其它應用程序可以調(diào)用這些屬性和方法。實現(xiàn)這些功能所必需的低層次 COM 接口都內(nèi)置于 Automation 接口處理程序中。在腳本組件文件中只需定義需要說明的屬性、方法和事件,便可確保主應用程序?qū)?Automation 處理程序的正確調(diào)用。
(3) 腳本組件文件屬于可擴展的標記語言(eXtensible Marked Language,簡稱 XML)文件。用戶可遵循 XML 規(guī)則來開發(fā)只包含簡單函數(shù)功能的 COM,也可開發(fā)包括外接組件的復雜 COM。
1.2 腳本組件文件的框架
Windows 腳本組件文件采用 XML 來編寫。XML 元素定義了腳本及其操作。
下面的示例演示了一個腳本組件文件的框架。
[code]<?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>[/code]
其中幾個主要腳本元素意義如下:
(1) <component> 元素包含的是一個完整的腳本組件定義。在同一個 .wsc 文件中可出現(xiàn)多個 <component> 元素,但這些 <component> 元素應包含在一個 <package> 元素內(nèi)。
(2) <registration> 元素包括用來將腳本組件注冊為 COM 組件的信息。如果宿主應用程序(如IE)在創(chuàng)建該腳本組件的實例時沒有直接用到 Windows 注冊表,則該元素可省略。
(3) <script> 元素包含用來實現(xiàn)腳本組件邏輯的腳本,這取決于所創(chuàng)建的 COM 組件類型。如果開發(fā)者創(chuàng)建的是 COM Automation 組件,則可以在 <public> 元素中聲明屬性、方法和事件,然后用一個或多個 <script> 元素編寫腳本來定義這些內(nèi)容。
(4) <reference> 元素引用在腳本中需要使用的類型庫。
1.3 腳本組件的使用
在 Windows 資源管理器中,用鼠標右鍵單擊腳本組件(.wsc)文件,然后選擇“注冊”,或者使用 regsvr32.exe 注冊程序進行注冊:
[code]regsvr32 path\component_name.wsc[/code]
在創(chuàng)建和注冊 Windows 腳本組件后,就可以像使用任何 COM 組件一樣,通過宿主應用程序調(diào)用來使用該腳本組件。宿主應用程序可以是 VB、C++、IE 等應用程序。
根據(jù)宿主應用程序和腳本組件類型,以及部署該腳本組件的位置,在創(chuàng)建腳本組件的實例時會有各種選項。其中最主要的差別是在本地還是遠程創(chuàng)建腳本組件的實例。如:
[code]Set local = CreateObject("ConDB.wsc") ' 實例化本地組件
Set remote= CreateObject("ConDB.wsc", "my_server") ' 實例化遠程組件[/code]
2、腳本組件應用實例
編寫腳本組件不像使用 VC、VB 等高級語言編寫 COM 組件那樣需要復雜的集成開發(fā)環(huán)境。開發(fā)者只需要使用簡單的文本編輯器就可以進行腳本組件的開發(fā)。
下面結(jié)合一個腳本組件實例(ConDB.wsc)簡要闡述應用腳本組件進行系統(tǒng)業(yè)務開發(fā)的過程。這個腳本組件將連接數(shù)據(jù)庫服務器,并打數(shù)據(jù)庫連接。
2.1 腳本組件文件 ConDB.wsc
[code]<?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">
<![CDATA[
Function ConToDB(servername, dbname, user, password)
On Error Resume Next
Set con = CreateObject("adodb.connection")
con.ConnectionTimeout = 25
con.ConnectionString = "Provider=SQLOLEDB.1" & _
";Persist Security Info=False;User ID=" & user & _
";pwd=" & password & _
";Initial Catalog=" & dbname & _
";Data Source=" & servername
con.Open
If con.State = 1 Then
ConToDB = "connection success!"
End if
If Err.Number <> 0 Then
ConToDB = Err.Description
End If
End Function
]]>
</script>
</component>[/code]
2.2 應用腳本組件 ConDB.wsc
創(chuàng)建和注冊腳本組件以后,開發(fā)者就可以在 VC、VB、IE 等宿主程序中使用組件,如下是在 IE 中使用組件 ConDB.wsc 的一個例子。
[code]<%@language=vbscript%>
<html>
<body>
<%Set db = CreateObject("ConDB.wsc.1.00")
desc = db.ConToDB("(local)", "pubs", "sa", "sapwd")
response.write desc %>
</body>
</html>[/code]
開發(fā)者除了可以像以上直接實例化組件對象使用腳本組件外,還可以為腳本組件生成一個類型庫,該類型庫包括組件的接口和成員的信息。在有些宿主應用程序(如VB)中,如果要給腳本組件編寫事件能力,則類型庫是必需的。使用類型庫可以將事件綁定到腳本組件上,并且在VB中可見。此外,在編寫腳本組件的相關VB代碼時,對象瀏覽器中將出現(xiàn)類型庫信息,從而使開發(fā)者能夠很方便地查看和使用腳本組件的方法、事件等成員、
開發(fā)者可以像以下這樣為一個腳本組件生成類型庫。在 Windows 資源中,用鼠標右鍵單擊腳本組件文件,然后選擇“生成類型庫”。這將為腳本組件生成一個與腳本組件文件名同名的 .tlb 文件,并在 Windows 注冊表中注冊。該文件將與腳本組件文件處于同一文件夾。
如果要更精確控制類型庫的生成,開發(fā)者可以在腳本組件文件中動態(tài)地生成類型庫,或者也可以使用命令行接口,如下為腳本組件(ConDB.wsc)創(chuàng)建一個類型庫。
[code]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[/code]
參見:
http://www.xav.com/perl/Windows/windows_script_components.html
|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )
GMT+8, 2024-10-23 08:34 , Processed in 0.062981 second(s), 18 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.