メソッドの公開

メソッドは、Windows® スクリプト コンポーネント ファイルの関数またはサブルーチンとして実装されます。

メソッドを公開するには

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

  2. <public> 要素に、<method> 要素を記述します。<method> 要素には、メソッドのパラメータを定義するために、必要に応じて 1 つ以上の <parameter> 要素を記述することができます。

  3. 関数を実装するためのプロシージャには、どのスクリプト言語を使用して記述してもかまいません。<component> 要素の内側で、<implements> 要素の外側にある <script> 要素の中にプロシージャを記述します。関数名が functionName に一致していることを確認してください。functionName を指定していない場合は、<method> 要素で指定した methodName に関数名が一致していることを確認します。

    たとえば、次のコードは、factorial および getRandomNumber という 2 つのメソッドを含むスクリプト コンポーネント ファイルの一部です。

    メモ    <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。

    <public>
       <method name="factorial"/>
       <method name="random" internalName="getRandomNumber">
          <parameter name="upperBound"/>
          <parameter name="seed"/>
       </method>
    </public>
    
    <script language="VBScript">
    Function factorial(n)
       <![CDATA[
       If isNumeric(n) Then
          If n <= 1 Then
             factorial = 1
          Else
             factorial = n*factorial(n-1)
          End If
       Else
          factorial = -2   ' エラー コード
       End If
    End Function
    
    Function getRandomNumber(upperBound, seed)
       getRandomNumber = Cint(upperBound * Rnd(seed) + 1)
    End Function
    ]]>
    </script>
    

スクリプト コンポーネントで既定のメソッドを指定しておくと、ホスト アプリケーションは、メソッドが明示的に呼び出されなくても、そのメソッドを実行することができます。たとえば、factorial というメソッドを公開しておき、既定として設定した場合、Visual Basic では次の方法で呼び出すことができます。

Set component = CreateObject("Component.MyComponent")
n = component.factorial(4)    ' factorial メソッドを明示的に呼び出します。
n = component(4)   ' factorial メソッドを既定のメソッドとして呼び出します。

既定のメソッドを指定するには、メソッドの属性に特別なディスパッチ ID dispid を設定します。dispids の詳細については、「イベントの公開」を参照してください。

既定のメソッドを指定するには

  • <method> 要素には、次のコードに示すように dispid="0" という属性を記述します。

    <public>
    <method name="factorial" dispid="0"/>
    </public>
    

    メモ   この方法は、既定のメソッドまたは既定のプロパティを指定する際に使用できますが、両方は指定できません。スクリプト コンポーネントでは、dispid の 0 がただ 1 つの要素です。

参照

イベントの公開 | プロパティの公開 | スクリプト コンポーネント ファイルの内容