要給 Windows® 腳本部件來添加事件能力:
有些主機環(huán)境還會要求您生成一個類型庫,主機需要這個類型庫來綁定事件。詳細信息請參閱創(chuàng)建腳本部件類型庫。
注意 Behavior 處理程序以一種略微不同的方式來說明事件。詳細信息請參閱在 Behavior 腳本部件中說明自定義事件。
必須逐個地聲明每個希望能夠激活的事件。
要聲明一個事件
<public> <property name="sname"/> <method name="factorial"/> <event name="namechanged"/> <event name="querydone"/> </public>
COM 編程通過派遣標識符(稱為 dispid ) 來提供事件通知,派遣標識符是指標識部件事件的整數(shù)值。dispid 在編譯時被寫入該部件的類型庫,然后由宿主應用程序用來綁定到事件。
給腳本部件創(chuàng)建類型庫的過程將自動為腳本部件的事件生成 dispid 。不過,如果您愿意,您可以指定自己的 dispid 。這樣做的好處是:
要給事件指定一個 dispid,請在 <event> 元素中包括該 dispid 屬性,如下例所示:
<public> <event name="namechanged" dispid="22"> </public>
Dispid 在腳本部件內必須是唯一的。您可以將一個為負數(shù)指定為 dispid,并映射到傳統(tǒng)的事件,但必須使用指定的范圍(如 -999 到 -500)加以控制。關于保留的 dispid 的范圍的詳細信息,請參閱 MSDN 庫中的 DISPID 的文檔。
注意 0 這個 dispid 號碼用來標識缺省的方法或屬性。詳細信息請參閱說明方法和說明屬性。
可以通過調用 fireEvent 方法并指定要激活的事件名來激活一個事件。不能激活沒有在 <implements> ; 元素中聲明的事件?梢约せ钅_本部件文件任何腳本中的事件。例如,下面演示了在屬性值更改時如何激活事件。
<script language="VBScript"> <![CDATA[ Sub put_lowercaseName(newLCName) name = newLCName fireEvent("namechanged") End Sub ]]> </script>
在 Behavior 腳本部件中說明自定義事件 | 說明方法 | 說明屬性 | 在宿主應用程序中處理腳本部件的事件 | 腳本部件文件的內容