イベントの公開

Windows®スクリプト コンポーネントにイベント機能を追加するには、次のようにします。

  • 発生させる予定の各イベントを宣言します。
  • スクリプト コンポーネントで必要なイベントを発生させる関数を呼び出します。

ホスト環境によっては、イベントにバインドするために使用するタイプ ライブラリを生成する必要があります。詳細については、「スクリプト コンポーネント タイプ ライブラリの作成」を参照してください。

メモ   Behavior ハンドラではイベントを公開する方法が、一部異なります。詳細については、「Behavior スクリプト コンポーネントのカスタム イベントの公開」を参照してください。

イベントを宣言する

発生させる予定の各イベントは、個別に宣言する必要があります。

イベントを宣言するには

  1. <public> 要素を <component> 要素の子要素として作成します。

  2. <public> 要素で、宣言するイベントごとに <event> 要素を記述します。

  3. たとえば、次のコードは、2 つのイベントを公開します。

    <public>
       <property name="sname"/>
       <method name="factorial"/>
       <event name="namechanged"/>
       <event name="querydone"/>
    </public>
    

ディスパッチ ID を指定する

COM プログラミングでは、コンポーネントのイベントを認識する整数値であるディスパッチ ID (それぞれ dispid として参照される) によって、イベントの通知を行います。dispid は、コンポーネントのタイプ ライブラリにコンパイルされ、ホスト アプリケーションによってイベントにバインドされます。

スクリプト コンポーネントのタイプ ライブラリを作成する処理では、スクリプト コンポーネントのイベントに対する dispid が自動的に作成されます。dispid は、独自に指定することもできます。独自に指定する場合は、次のような利点があります。

  • スクリプト コンポーネントのイベントの dispid が、いつも同じ値であることを保証します。タイプ ライブラリ ジェネレータを使って dispid を割り当てる場合は、ライブラリが生成されるたびに dispid が変更される可能性があります。
  • スクリプト コンポーネントのイベントを、指定した番号の dispid に割り当てることができます。たとえば、エラー通知のような標準 COM イベントを発生させる場合、COM の規約で使用されている値に、イベントを割り当てることができます。

イベントの dispid を指定する場合、次のコードのように <event> 要素に dispid 属性を記述します。

<public>
   <event name="namechanged" dispid="22">
</public>

スクリプト コンポーネントでは、dispid は一意である必要があります。標準的なイベントに dispid を割り当てる場合、負の値を指定することもできますが、コントロール用の dispid は -999 から -500 までにするなど、指定した範囲の値だけを使用してください。予約済みの dispid の有効範囲については、MSDN ライブラリの DISPID に関するドキュメントを参照してください。

メモ   dispid 番号 0 は、既定のメソッドまたは既定のプロパティを識別するために使用します。詳細については、「メソッドの公開」または「プロパティの公開」を参照してください。

イベントを発生させる

発生させるイベントの名前を指定して、fireEvent メソッドを呼び出すと、イベントを発生させることができます。<implements> 要素で公開していないイベントは、発生させることができません。スクリプト コンポーネント ファイル内のどのスクリプトを使用しても、イベントは発生させることができます。たとえば、次のコードは、プロパティ値が変更されたときにイベントを発生させます。

<script language="VBScript">
<![CDATA[
Sub put_lowercaseName(newLCName)
   name = newLCName
   fireEvent("namechanged")
End Sub
]]>
</script>

参照

Behavior スクリプト コンポーネントのカスタム イベントの公開 | メソッドの公開 | プロパティの公開 | ホスト アプリケーションでのスクリプト コンポーネント イベントの処理 | スクリプト コンポーネント ファイルの内容