class WIN32OLE_TYPELIB
クラスの継承リスト: WIN32OLE_TYPELIB < Object < Kernel < BasicObject
要約
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
-
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]
-
システムに登録されているすべてのTypeLibを取得します。
- [RETURN]
- 登録されているすべてのTypeLibを元にWIN32OLE_TYPELIBオブジェクト の配列を返します。
tlibs = WIN32OLE_TYPELIB.typelibs
インスタンスメソッド
guid -> String
-
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
-
TypeLibのヘルプファイル用ドキュメント文字列からTypeLibの名前を取得します。
- [RETURN]
- TypeLibの名前を文字列で返します。
- [EXCEPTION] WIN32OLERuntimeError:
- ドキュメント文字列が取得できなかった場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library') tlib.library_name # => Excel
major_version -> Integer
-
TypeLibのメジャーバージョン番号を取得します。
- [RETURN]
- TypeLibのメジャーバージョン番号を整数で返します。
- [EXCEPTION] WIN32OLERuntimeError:
- TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library') puts tlib.major_version # => 1
minor_version -> Integer
-
TypeLibのマイナーバージョン番号を取得します。
- [RETURN]
- TypeLibのマイナーバージョン番号を整数で返します。
- [EXCEPTION] WIN32OLERuntimeError:
- TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library') puts tlib.minor_version # => 7
name -> String
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]
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
-
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
-
TypeLibのバージョン番号を取得します。
- [RETURN]
- TypeLibのバージョン番号を整数部にメジャーバージョン番号、小数点 数部にマイナーバージョン番号を設定したFloatで返します。
- [EXCEPTION] WIN32OLERuntimeError:
- TypeLibの属性が読み取れない場合に通知します。
tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 14.0 Object Library') puts tlib.version # => 1.7
visible? -> bool
-
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