Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > 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