要約
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][edit]-
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][edit]-
システムに登録されているすべてのTypeLibを取得します。
- [RETURN]
- 登録されているすべてのTypeLibを元にWIN32OLE_TYPELIBオブジェクトの配列を返します。
tlibs = WIN32OLE_TYPELIB.typelibs
インスタンスメソッド
guid -> String
[permalink][rdoc][edit]-
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][edit]-
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][edit]-
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][edit]-
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][edit]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][edit]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][edit]-
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][edit]-
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][edit]-
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