在創(chuàng)建 Windows® 腳本部件后,就可以象任何 COM 部件一樣,通過從宿主應(yīng)用程序調(diào)用來使用該腳本部件。宿主應(yīng)用程序可以是 Microsoft® Visual Basic®、C++、Microsoft® Internet Explorer 或者其他應(yīng)用程序。
注意 為 DHTML Behavior 所編寫的腳本部件與傳統(tǒng)的 COM 對象的實例化有所不同。詳細信息請參閱 Microsoft Site Builder Network (SBN) Web 站點上的“使用 DHTML Behavior”。
根據(jù)宿主應(yīng)用程序、所使用的腳本部件類型,以及部署該腳本部件的位置,在創(chuàng)建腳本部件的實例時會有各種選項。不過,其中最主要的差別是在本地(即與應(yīng)用程序在同一個計算機上)還是遠程(在別的計算機上)創(chuàng)建腳本部件的實例。
不管是哪種情況,都有一些是需要牢記的。如果創(chuàng)建了腳本部件的實例,又使用該實例更改了 .wsc 文件,也不會更新該部件的這個實例。要更新,必須創(chuàng)建該腳本部件的一個新實例。
所能使用的所有屬性和方法就是在腳本部件文件的 <public> 元素和腳本中所定義的。如果所用的環(huán)境支持語句完善,例如 Visual Basic,則在生成并使用類型庫時將能夠看到腳本部件的屬性和方法。詳細信息請參閱創(chuàng)建腳本部件類型庫。
如果創(chuàng)建腳本部件的實例失敗,可能是由于腳本部件文件中的語法或運行時錯誤造成的。任何 XML 元素(包括 <registration> 元素)的語法分析錯誤都會導(dǎo)致實例化操作失敗。在開發(fā)腳本部件文件時,可以按照檢查腳本部件文件中的錯誤所描述的,在 <?component?> 處理指令中設(shè)置錯誤檢查選項。
提示 為了讓宿主應(yīng)用程序方便地了解腳本部件所說明的 COM 接口,腳本部件運行時程序可以生成一個類型庫,其中包含了有關(guān)該腳本部件中可用的屬性、方法和事件的信息。詳細信息請參閱創(chuàng)建腳本部件類型庫。
如果腳本部件與宿主應(yīng)用程序安裝在同一個計算機上,則可以按照注冊腳本部件所描述的,將腳本部件注冊為該計算機的部件。然后就可以使用宿主應(yīng)用程序的標準方法來創(chuàng)建對象實例,如 CreateObject 函數(shù)。例如,假設(shè)已注冊了一個程序 ID 為 component.MyComponent 的腳本部件,如果要在 Visual Basic 中創(chuàng)建該腳本部件的一個實例,則可以使用下面這條語句:
Set oComponent = CreateObject("Component.MyComponent")
注意 如果宿主應(yīng)用程序是 Visual Basic,并且要處理由腳本部件激活的事件,則必須用一個包括 WithEvents 關(guān)鍵字的 Dim 語句早期綁定該對象,如下所示:
Dim WithEvents scMyComponent As MyComponent Private Sub Command1_Click() Set scMyComponent=CreateObject("MyComponent") End Sub
注意 詳細信息請參閱在宿主應(yīng)用程序中處理腳本部件的事件。如果不想給腳本部件事件編寫處理程序,則這是不必要的。
在 Web 頁面上,可以使用 <OBJECT> 標記來創(chuàng)建腳本部件的實例。您必須知道該腳本部件的類 ID,并在 <OBJECT> 標記中包括這個類 ID,如下例所示:
<OBJECT ID="oComponent" CLASSID="clsid:855c8606-49ba-11d2-a428-00c04f8ec80b"> </OBJECT>
如果腳本部件不是在本地計算機上注冊的,您可以使用該腳本部件的別名來創(chuàng)建其實例。在諸如 GetObject 的函數(shù)中支持別名。本地計算機上必須注冊有腳本部件運行時程序 Scrobj.dll。
注意 由于安全性方面的原因,Microsoft® Internet Explorer 上的腳本部件不支持 GetObject 函數(shù)。
例如,下面演示了如何調(diào)用 Visual Basic 的 GetObject 函數(shù)來創(chuàng)建未注冊的腳本部件的實例:
Set oComponent = GetObject("script:c:\COM\MyComponent.wsc")
如果別名所引用的 .wsc 文件包含多個腳本部件,可以用散列符號(#)作為分隔符,在文件名后加上具體的腳本部件的名字來指定要實例化的腳本部件。下面的代碼將創(chuàng)建一個 ID 為 “math”,包含在 MyComponent.wsc 文件中的腳本部件的實例:
Set oComponent = GetObject("script:c:\COM\MyComponent.wsc#math")
使用 URL 別名可以創(chuàng)建位于別的計算機(如 Web 服務(wù)器)上的腳本部件的實例。應(yīng)使用完整的 URL (帶 http 協(xié)議) 來表示腳本部件的位置,如下例所示:
Set oComponent = GetObject("script:http://myserver/MyComponent.wsc")
Internet Explorer 5.0 支持使用 DHTML Behavior 語法來創(chuàng)建腳本部件的實例,該方法與傳統(tǒng)的實例化對象的語法有些不同,并且能確保腳本部件不能訪問可能不太安全的系統(tǒng)對象。相應(yīng)的示例請參閱 Microsoft Site Builder Network (SBN) Web 站點上的使用 DHTML Behavior。
如果腳本部件的 <registration> 元素的遠程屬性已設(shè)置為 “true”,則可以使用分布式 COM (DCOM) 從別的計算機上遠程實例化該腳本部件。
兩個計算機都必須安裝了基本的 DCOM。如果計算機使用的下述軟件之一,則已經(jīng)正確配置了 DCOM:
腳本部件本身必須按照下面的要求部署:
在創(chuàng)建遠程腳本部件的實例時,在應(yīng)用程序內(nèi)它將象一個本地對象一樣工作;您可以正常地調(diào)用其方法以及獲取和設(shè)置其屬性。不過,該遠程腳本部件的腳本是在遠程機器上運行的,并訪問該計算機的資源(在許可的任何安全性限制之內(nèi))。本地計算機上的宿主應(yīng)用程序和遠程機器上的腳本部件之間的通信由 DCOM 自動處理的,因而是不可見的。
要創(chuàng)建腳本部件的遠程實例,可以調(diào)用 CreateObject 方法,并將遠程計算機的名稱作為一個參數(shù)傳遞給該方法。
注意 使用 CreateObject 來實例化遠程腳本部件的能力要求 Visual Basic 6.0 或更新版本,或者 VBScript 5.0 或更新版本。
下面的 Visual Basic 示例演示了如何遠程實例化在名為“myserver”的計算機上的腳本部件:
Set newS = CreateObject("Component.MyComponent", "myserver")
注意 在首次實例化一個遠程腳本部件時,由于 DCOM 要建立兩個計算機之間的通信,因而可能會有些延遲。
創(chuàng)建注冊信息 | 創(chuàng)建腳本部件 | 腳本部件是如何運作的 | 腳本部件簡介 | 注冊腳本部件