Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > 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__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined !~ <=> == === =~ _dump class clone define_singleton_method display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy inspect instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? send singleton_class singleton_method singleton_methods taint tainted? tap then to_a to_ary to_hash to_int to_io to_proc to_regexp to_s to_str trust untaint untrust untrusted? .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_ENGINE_VERSION ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE