次の方法で共有


スクリプト コンポーネント タイプ ライブラリの作成

インターフェイスおよびメンバの情報を含む、Windows® スクリプト コンポーネント用のタイプ ライブラリを作成できます。Visual Basic など、ホスト アプリケーションによっては、スクリプト コンポーネント用のイベントを使用するためにタイプ ライブラリが必要なものもありますが、その他のホスト アプリケーションでは、タイプ ライブラリは省略可能です。しかし、タイプ ライブラリが必要ない場合でも、タイプ ライブラリを生成しておくと、スクリプト コンポーネントをより簡単に使用することができ、ホストアプリケーションでのエラーも少なくなります。

たとえば、ホスト アプリケーションとして Visual Basic を使用する場合、スクリプト コンポーネントのタイプ ライブラリを選択するには [参照] ダイアログ ボックスを使用します。このダイアログ ボックスでスクリプト コンポーネントにイベントをバインドし、Visual Basic で表示できるようにします。また、スクリプト コンポーネントを参照する Visual Basic のコードを記述する場合、Visual Basic では、ステートメントを補完する際にタイプ ライブラリ情報を参照するので、オブジェクト ブラウザで、スクリプト コンポーネントが公開しているプロパティ、メソッド、およびイベントを簡単に確認し、使用することができます。

メモ   ホスト アプリケーションでのタイプ ライブラリの使用の詳細については、アプリケーションのドキュメントを参照してください。

スクリプト コンポーネント タイプ ライブラリを作成するには

  • Windows エクスプローラに表示されたスクリプト コンポーネントの .wsc ファイルを右ボタンでクリックし、[タイプ ライブラリの生成] をクリックします。

    スクリプト コンポーネント用の .tlb ファイルが、スクリプト コンポーネント ファイルと同じ名前で .wsc ファイルがあるフォルダに生成され、Windows レジストリに登録されます。

タイプ ライブラリの生成をより正確に制御するには、スクリプト コンポーネント ファイルの内部のスクリプトから動的にタイプ ライブラリを生成するか、またはコマンドライン インターフェイスを使用します。

タイプ ライブラリを動的に生成する

スクリプト コンポーネント ランタイムには、Component.GenerateTypeLib オブジェクトによって実装されているオートメーション インターフェイスが含まれています。スクリプト コンポーネント ファイルの中からタイプ ライブラリを生成するために、スクリプト内でこのオブジェクトを使用します。スクリプト コンポーネントを登録する際にタイプ ライブラリを自動的に作成するには、特に有効です。

スクリプト コンポーネント タイプ ライブラリを動的に作成するには

  1. スクリプト コンポーネント ファイル内のスクリプトで、次のような構文を使用して、Component.GenerateTypeLib オブジェクトのインスタンスを作成します。

    set oTL = CreateObject("Scriptlet.GenerateTypeLib")
    
  2. Component.GenerateTypeLib オブジェクトの次のプロパティを設定します。

    プロパティ/メソッド 内容
    AddURL (メソッド) タイプ ライブラリを生成するスクリプト コンポーネント ファイルの URL を追加します。このメソッド プロパティを何度も呼び出して、タイプ ライブラリ内に複数のスクリプト コンポーネントを含めることができます。
    Path (プロパティ) タイプ ライブラリが記述されているパスとファイルを指定します。既定のパスはカレント ディレクトリで、既定の名前はスクリプト コンポーネント ファイルの名前に拡張子 .tlb を付けたものです。オブジェクトが、指定されたライブラリを作成できない場合は、既定で component.tlb というタイプ ライブラリが作成されます。
    Doc (プロパティ) タイプ ライブラリ情報と共にレジストリに格納される情報を、文字列で指定します。
    GUID (プロパティ) タイプ ライブラリ用の GUID を指定します (スクリプト コンポーネント用の GUID ではありません)。指定しない場合は、GenerateTypeLib オブジェクトによって GUID が作成されます。この場合、タイプ ライブラリの GUID は、コンピュータごとに異なる値になります。GUID は、次の書式で指定します。x は、16 進の値です。
    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    Name (プロパティ) タイプ ライブラリの内部名を指定します。この名前は、Visual Basic のオブジェクト ブラウザなどのアプリケーションで表示されます。
    MajorVersion (プロパティ) 代入する整数値を指定します。
    MinorVersion (プロパティ) 代入する整数値を指定します。
  3. タイプ ライブラリ オブジェクトの Write メソッドを呼び出して、.tlb ファイルを作成し、登録します。

  4. タイプ ライブラリを追加して作成する場合、GenerateTypeLib オブジェクトの Reset メソッドを呼び出して、AddURL プロパティに指定したスクリプト コンポーネント ファイルの一覧をクリアします。そして、URL およびその他の必要なプロパティをリセットし、再び Write メソッドを呼び出します。

次の <registration> 要素内のコードは、タイプ ライブラリを動的に作成する例です。

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

<registration
   description="My Test Component"
   progid="Component.TestScript"
   version="1"
   classid="{2154c700-9253-11d1-a3ac-0aa0044eb5f}">
   <script language="VBScript">
   <![CDATA[
   Function Register()
      Set oTL = CreateObject("Scriptlet.GenerateTypeLib")
         oTL.AddURL "d:\components\MyComponent.wsc"   ' スクリプト コンポーネントの URL。
         oTL.AddURL "d:\components\YourComponent.wsc"
         oTL.Path = "d:\components\MyComponent.tlb"   ' .tlb のパス。
         oTL.Doc = "Sample component typelib"   ' ドキュメントの文字列。
         oTL.GUID = "{a1e1e3e0-a252-11d1-9fa1-00a0c90fffc0}"
         oTL.Name = "MyComponentTLib" ' タイプ ライブラリの内部名。
         oTL.MajorVersion = 1
         oTL.MinorVersion = 0
         oTL.Write ' タイプ ライブラリをディスクに書き込みます。
         oTL.Reset ' AddURL メソッドの URL リストをクリアします。
      End Function
   ]]>
   </script>
</registration>

コマンドライン インターフェイス

[コマンド プロンプト] ウィンドウで Rundll32.exe プログラムを呼び出して、タイプ ライブラリを作成することができます。

コマンド プロンプトでタイプ ライブラリを作成するには

  • 次の構文を使用して Rundll32.exe を呼び出します。

    rundll32.exe path\scrobj.dll,GenerateTypeLib options
    

    引数

    • path   コンピュータ上で Scrobj.dll の場所を示すパスを指定します。
    • options   タイプ ライブラリの情報を、フラグと値を組み合わせて -flag:value の形式で指定します。この引数は、どのような順序でも指定できます。次のフラグがサポートされています。各フラグの値は、前のセクションの「スクリプト コンポーネント タイプ ライブラリを動的に作成するには」を参照してください。
      -name:Name
      -file:Path
      -doc:\"Doc\"
      -guid:GUID
      -major:MajorVersion
      -minor:MinorVersion
      -URL:AddURL

たとえば、次のコマンドは、スクリプト コンポーネント MyComponent.wsc から MyComponent.tlb というタイプ ライブラリを作成します (コマンドは、わかりやすくするために、途中で折り返しています)。

rundll32.exe c:\winnt\system32\scrobj.dll,GenerateTypeLib 
   -name:MyComponentTLib -file:d:\components\MyComponent.tlb 
   -doc:\"Sample component typelib\" 
   -guid:{a1e1e3e0-a252-11d1-9fa1-00a0c90fffc0} -major:1 -minor:0 
   -URL:d:\components\MyComponent.wsc

タイプ ライブラリのトラブルシューティング

さまざまな理由により、タイプ ライブラリの生成が失敗することがあります。場合によっては、問題の原因がどこにあるか明確にならない場合もあります。タイプ ライブラリを生成できない場合は、失敗の原因と思われるものを次のリストから探してください。

  • 関数でプロパティを定義する場合、get 関数と put 関数には、同じ名前で同じ数の引数を指定する必要があります。詳細については、「プロパティの公開」を参照してください。

    メモ   スクリプト コンポーネントの get property 関数と put property 関数に、異なる数の引数を定義することもできますが、その場合、このスクリプト コンポーネント用のタイプ ライブラリを作成することができなくなります。

  • イベントを公開している場合、スクリプト コンポーネント内で 2 回以上同じディスパッチ ID (dispid) を使用することはできません。また、dispid には、指定の範囲にある場合を除いて、負の値を使用することはできません。詳細については、「メソッドの公開」を参照してください。

  • スクリプト コンポーネントの各要素の ID 属性は、一意である必要があります。2 つ以上のスクリプト コンポーネントからタイプ ライブラリを生成する場合、ID はタイプ ライブラリ全体として一意である必要があります。

参照

スクリプト コンポーネント ファイルの内容 | 登録情報の作成 | スクリプト コンポーネント ファイルのエラー チェック | スクリプト コンポーネント ファイルと XML 適合性