class WIN32OLE_TYPELIB

要約

OLEオートメーションサーバの型情報ライブラリ(TypeLib)を操作するためのクラスです。

OLEオートメーションサーバはクライアントに、クラス、インターフェイス、メソッドなどのメタデータを提供するための機構を持ちます。この情報は拡張子からTLBと呼ばれるライブラリまたはオートメーションサーバのプログラム内のリソースとして保持され、クライアントからの要求によって参照可能となります。

WIN32OLE_TYPELIBクラスは、TypeLibを操作して各種情報を参照するためのオブジェクトを生成します。

サンプルコード

require 'win32ole'

tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts "Guid of Excel typelib = #{tlib.guid}"
puts "version = #{tlib.major_version}.#{tlib.minor_version}"
puts "creatable classes:"
tlib.ole_types.select{|cls| cls.progid }.each do |cls|
  puts "  #{cls.name}: PROGID=#{cls.progid}"
end

上記を実行すると以下の出力を得ます。

Guid of Excel typelib = {00020813-0000-0000-C000-000000000046}
version = 1.7
creatable classes:
  Application: PROGID=Excel.Application.14
  Chart: PROGID=Excel.Chart.8
  Worksheet: PROGID=Excel.Sheet.8

ここでは、Excelのクラスのうち、WIN32OLE.newで作成可能なクラスを引数で指定する名前(PROGID)と共に示しています。

目次

特異メソッド
インスタンスメソッド

特異メソッド

new(libname, mjv = nil, miv = nil) -> WIN32OLE_TYPELIB[permalink][rdoc]

WIN32OLE_TYPELIBオブジェクトを生成します。

[PARAM] libname:
生成するTypeLibのレジストリ上のドキュメント文字列(WIN32OLE_TYPELIB#name)または GUID(WIN32OLE_TYPELIB#guid)またはTLBファイル名を文字列で指定します。
[PARAM] mjv:
作成するTypeLibのメジャーバージョン番号をIntegerで指定します。または整数部にメジャーバージョン、小数点数部にマイナーバージョンを指定したFloatで指定します。libnameに名前を指定した場合は無視します。
[PARAM] miv:
作成するTypeLibのマイナーバージョン番号を整数で指定します。 mjvにFloatを与えた場合およびlibnameに名前を指定した場合は無視します。
[RETURN]
libnameで指定したWIN32OLE_TYPELIBオブジェクトを返します。
[EXCEPTION] WIN32OLERuntimeError:
引数で指定したTypeLibが見つかりません。
tlib1 = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
tlib2 = WIN32OLE_TYPELIB.new('{00020813-0000-0000-C000-000000000046}')
tlib3 = WIN32OLE_TYPELIB.new('{00020813-0000-0000-C000-000000000046}', 1.7)
tlib4 = WIN32OLE_TYPELIB.new('{00020813-0000-0000-C000-000000000046}', 1, 7)
tlib5 = WIN32OLE_TYPELIB.new("C:\\WINDOWS\\SYSTEM32\\SHELL32.DLL")
puts tlib1.name  # => 'Microsoft Excel 14.0 Object Library'
puts tlib2.name  # => 'Microsoft Excel 14.0 Object Library'
puts tlib3.name  # => 'Microsoft Excel 14.0 Object Library'
puts tlib4.name  # => 'Microsoft Excel 14.0 Object Library'
puts tlib5.name  # => 'Microsoft Shell Controls And Automation'

TypeLibは、レジストリのHKEY_CLASS_ROOT\TypeLibキーの下にGUIDをキーとして格納されています。GUIDキーの下にバージョン番号キーが並び、ドキュメント文字列はバージョン番号キーの既定値に設定されています。

ドキュメント文字列は、コンテキストヘルプなどに利用可能なTypeLibの簡単な説明文で、通常バージョン番号を含みます。

typelibs -> [WIN32OLE_TYPELIB][permalink][rdoc]

システムに登録されているすべてのTypeLibを取得します。

[RETURN]
登録されているすべてのTypeLibを元にWIN32OLE_TYPELIBオブジェクトの配列を返します。
tlibs = WIN32OLE_TYPELIB.typelibs

インスタンスメソッド

guid -> String[permalink][rdoc]

TypeLibのGUIDを取得します。

[RETURN]
TypeLibのGUIDを文字列で返します。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.guid # => '{00020813-0000-0000-C000-000000000046}'
library_name -> String[permalink][rdoc]

TypeLibのヘルプファイル用ドキュメント文字列からTypeLibの名前を取得します。

[RETURN]
TypeLibの名前を文字列で返します。
[EXCEPTION] WIN32OLERuntimeError:
ドキュメント文字列が取得できなかった場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
tlib.library_name # => Excel
major_version -> Integer[permalink][rdoc]

TypeLibのメジャーバージョン番号を取得します。

[RETURN]
TypeLibのメジャーバージョン番号を整数で返します。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.major_version # => 1
minor_version -> Integer[permalink][rdoc]

TypeLibのマイナーバージョン番号を取得します。

[RETURN]
TypeLibのマイナーバージョン番号を整数で返します。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.minor_version # => 7
name -> String[permalink][rdoc]
to_s -> String

TypeLibのドキュメント文字列を取得します。

ドキュメント文字列は、コンテキストヘルプなどに利用可能なTypeLibの簡単な説明文で、通常バージョン番号を含みます。

[RETURN]
TypeLibのドキュメント文字列を返します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.name # => 'Microsoft Excel 14.0 Object Library'
ole_types -> [WIN32OLE_TYPE][permalink][rdoc]
ole_classes -> [WIN32OLE_TYPE]

TypeLibに格納されているすべての型を取得します。

TypeLibに格納されている型には、クラス(CoClass——コンポーネントクラス)やEnum(列挙子)、構造体などがあります。

[RETURN]
TypeLibに格納されているすべての型をWIN32OLE_TYPEオブジェクトの配列として返します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
classes = tlib.ole_types.map{|k| k.name} # => ["Adjustments", "CalloutFormat", ...]
path -> String[permalink][rdoc]

TypeLibのパス名を取得します。

[RETURN]
TypeLibのパス名を文字列で返します。この値はレジストリの登録値をそのまま利用するため、Rubyのパス名形式(ディレクトリ区切りは「/」)ではなく、Windowsのパス名形式(ディレクトリ区切りは「\」)です。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.path # => 'C:\...\EXCEL.EXE'

TypeLibは拡張子TLB(まれにOLB)という独立したファイルの場合と、サーバの DLLやEXE内にリソースとして組み込まれている場合とがあります。

version -> Float[permalink][rdoc]

TypeLibのバージョン番号を取得します。

[RETURN]
TypeLibのバージョン番号を整数部にメジャーバージョン番号、小数点数部にマイナーバージョン番号を設定したFloatで返します。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.version # => 1.7
visible? -> bool[permalink][rdoc]

TypeLibの情報が公開情報かどうかを照会します。

このメソッドは、TypeLibの属性(TLIBATTR)のフラグ値が0、制限 (LIBFLAG_FRESTRICTED)、コントロール内部使用(LIBFLAG_FHIDDEN)のいずれかであれば非公開TypeLibとみなして偽を返します。

[RETURN]
TypeLibが公開可能であれば真を返します。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library')
puts tlib.visible? # => true