Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > WIN32OLE_VARIANTクラス

class WIN32OLE_VARIANT

クラスの継承リスト: WIN32OLE_VARIANT < Object < Kernel < BasicObject

要約

OLEオートメーションの標準型のVARIANTオブジェクトをRubyで利用するためのクラスです。

VARIANT型とは、型情報と値のペアから構成されるデータ型で、元はVBの形無し変数のための構造体です。OLEオートメーションのメソッド呼び出しには汎用型として引数にはVARIANT型を利用します。

OLEオートメーションのメソッド呼び出し規約では、引数はVARIANT型の配列として定義されています。

この規約に対して、WIN32OLEでは、VARIANT型の値に対する参照を引数配列の各要素に設定します。この実装は、ほとんどのOLEオートメーションサーバで正しく処理されます。

しかし、一部のOLEオートメーションサーバは、引数配列の要素にVARIANT型の値そのものを要求します。この場合、WIN32OLEの実装は正しく処理されません。

WIN32OLE_VARIANTオブジェクトを利用すると、このようなOLEオートメーションサーバのメソッド呼び出しに対して、VARIANT型の値を引数配列に設定することをWIN32OLEへ指示できます。

なお、WIN32OLE_VARIANTを利用する必要の有無は、呼び出し対象のOLEオートメーションサーバの仕様または実装に依存します。

サンプルコード

shell = WIN32OLE.new('Shell.Application')
folder = shell.NameSpace('C:\\Users\\Public\\Documents')
item = folder.ParseName('test.txt')
v = WIN32OLE_VARIANT.new('Delete')
item.invokeVerb(v)     # => ゴミ箱への移動ダイアログを表示

上記サンプルの最後の行を

item.invokeVerb('Delete')

とすると、FolderItemオブジェクトは引数を認識できず、既定の動作としてOpenを実行します。

プログラムの見た目と異なり、後者のコードに対してWIN32OLEは、'Delete'という文字列を格納したVARIANT型への参照を引数として与えるためです。それに対して前者では、'Delete'という文字列を格納したVARIANT型を引数として与えます。

特異メソッド

定義 説明
array(dims, vt) -> WIN32OLE_VARIANT

配列用のVARIANTオブジェクトを生成します。

new(val, vartype = nil) -> WIN32OLE_VARIANT

指定したオブジェクトを値とするWIN32OLE_VARIANTオブジェクトを生成します。

インスタンスメソッド

定義 説明
self[i...] -> object

配列型のWIN32OLE_VARIANTの要素を取得します。

self[i...] = val

配列型のWIN32OLE_VARIANTの要素を設定します。

value -> object

値に対応するRubyオブジェクトを取得します。

value=(val) -> ()

WIN32OLE_VARIANTの値を再設定します。

vartype -> Integer

selfの型情報を取得します。

定数

定義 説明
Empty -> WIN32OLE_VARIANT

EMPTY型のWIN32OLE_VARIANTオブジェクトです。

Nothing -> WIN32OLE_VARIANT

DISPATCH型の空のオブジェクトです。

Null -> WIN32OLE_VARIANT

NULL型のWIN32OLE_VARIANTオブジェクトです。

継承したメソッド

! != == === =~ __id__ __send__ _dump class clone dclone display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_eval instance_exec instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods must_be must_be_close_to must_be_empty must_be_instance_of must_be_kind_of must_be_nil must_be_same_as must_be_within_epsilon must_equal must_include must_match must_raise must_respond_to must_send must_throw nil? pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods public_methods remove_instance_variable respond_to? respond_to_missing? singleton_class singleton_method_added singleton_method_removed singleton_method_undefined singleton_methods taint tainted? tap to_a to_ary to_hash to_int to_io to_proc to_regexp to_s to_str to_yaml to_yaml_properties to_yaml_style trust untaint untrust untrusted? wont_be wont_be_close_to wont_be_empty wont_be_instance_of wont_be_kind_of wont_be_nil wont_be_same_as wont_be_within_epsilon wont_equal wont_include wont_match wont_respond_to