class WIN32OLE_METHOD

[edit]

要約

OLEオートメーションサーバが持つメソッドの情報を提供します。

WIN32OLE_METHODは、WIN32OLE#ole_methodsなどの呼び出しによって返されるオブジェクトで、OLEオートメーションサーバのメソッドの情報(メタデータ)を保持します。

サンプルコード

  excel = WIN32OLE.new('Excel.Application')
  excel.ole_methods.each do |method|
    if method.visible?
      puts <<SIGNATURE
#{method.return_type} #{method.name}(#{
    method.params.map {|p| "#{p.ole_type} #{p.name}"}.join(', ')
}) : #{method.helpstring}
SIGNATURE
    end
  end

@see WIN32OLE#ole_methods, WIN32OLE#ole_func_methods, WIN32OLE#ole_get_methods, WIN32OLE#ole_put_methods, WIN32OLE#ole_method, WIN32OLE#ole_method_help, WIN32OLE_PARAM

目次

特異メソッド
インスタンスメソッド

特異メソッド

new(ole_type, method) -> WIN32OLE_METHOD[permalink][rdoc][edit]

WIN32OLE_TYPEとメソッド名を指定してWIN32OLE_METHODのインスタンスを生成します。

OLEオートメーションサーバの型情報とメソッド名からWIN32OLE_METHODのインスタンスを生成します。

アプリケーションプログラムでは、WIN32OLE_METHODオブジェクトをnewメソッドで生成するよりも、WIN32OLE#ole_methodなどのメソッドを参照するほうが簡単です。

[PARAM] ole_type:
WIN32OLE_TYPEのインスタンス。
[PARAM] method:
メソッド名を文字列で指定します。
[RETURN]
methodパラメータに対応するWIN32OLE_METHODのインスタンス。
[EXCEPTION] WIN32OLERuntimeError:
methodパラメータで指定したメソッドが見つかりません。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')

インスタンスメソッド

dispid -> Integer[permalink][rdoc][edit]

メソッドのディスパッチID(DISPID)を取得します。

ディスパッチIDはメソッドの一意識別子です。WIN32OLEでは、 WIN32OLE#_invokeなどのメソッドで、呼び出すサーバのメソッドを指定するのに利用します。

[RETURN]
メソッドのDISPIDを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.dispid # => 181

[SEE_ALSO] WIN32OLE#_invoke, WIN32OLE#_getproperty, WIN32OLE#_setproperty

event? -> bool[permalink][rdoc][edit]

メソッドがイベントかどうかを取得します。

イベントとはこのサーバが実装しているメソッドではなく、クライアント側がサーバ側の通知を受けるために実装するメソッドです。

[RETURN]
メソッドがイベントであれば真。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SheetActivate')
puts method.event? # => true

[SEE_ALSO] WIN32OLE_EVENT

event_interface -> String | nil[permalink][rdoc][edit]

メソッドがイベントの場合、イベントのインターフェイス名を取得します。

[RETURN]
メソッドがイベントであれば、イベントのインターフェイス名を返します。イベントでなければnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SheetActivate')
puts method.event_interface # =>  WorkbookEvents
helpcontext -> Integer | nil[permalink][rdoc][edit]

メソッドのヘルプコンテキストを取得します。

ヘルプコンテキストは、関連するヘルプファイル上のトピック位置を示す整数値です。

[RETURN]
ヘルプコンテキストを返します。未定義の場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.helpcontext # => 65717

WIN32OLE_METHODオブジェクトを引数として、WIN32OLE.ole_show_helpでヘルプファイルを表示する場合には、WIN32OLEが内部で当メソッドを呼び出します。

[SEE_ALSO] WIN32OLE.ole_show_help

helpfile -> String | nil[permalink][rdoc][edit]

ヘルプファイルのパス名を取得します。

メソッドにヘルプファイルが関連付けられている場合、該当ヘルプファイルのパス名を返します。

[RETURN]
ヘルプファイルのパス名を文字列で返します。ヘルプファイルが未定義ならばnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.helpfile # => C:\...\VBAXL9.CHM

メソッドにヘルプファイルが関連付けられている場合、WIN32OLE.ole_show_helpにWIN32OLE_METHODオブジェクトを与えてヘルプファイルを表示できます。

[SEE_ALSO] WIN32OLE.ole_show_help

helpstring -> String | nil[permalink][rdoc][edit]

メソッドのヘルプ文字列を取得します。

helpstringは、IDEがメソッドのバルーンヘルプを表示するような場合に利用可能な、1行程度でメソッドを説明する文字列です。

[RETURN]
ヘルプ文字列を返します。未定義ならばnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'IWebBrowser')
method = WIN32OLE_METHOD.new(tobj, 'Navigate')
puts method.helpstring # => Navigates to a URL or file.
invkind -> Integer[permalink][rdoc][edit]

メソッドの種類を示すINVOKEKIND列挙値を取得します。

ここで言うメソッドの種類というのは、OLEオートメーションクライアントの記述言語がどのような形式でサーバ呼び出しを記述すべきかを指定した属性値です。

[RETURN]
メソッドのINVOKEKINDを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.invkind # => 1

INVOKEKIND列挙値は以下の通りです。メソッドの種類は以下の値の論理和で示されます。

INVOKE_FUNC(1)

関数呼び出し形式で記述するメソッドです。

INVOKE_PROPERTYGET(2)

プロパティ参照形式で記述するメソッドです。

INVOKE_PROPERTYPUT(4)

プロパティに値を設定する形式で記述するメソッドです。

INVOKE_PROPERTYPUTREF(8)

プロパティに参照を設定する形式で記述するメソッドです。

なおINVOKE_PROPERTYPUTREFとINVOKE_PROPERTYPUTは、プロパティ設定形式が2 種類ある言語用の区分です。Rubyでの記述時はどちらも「prop=(arg)」の形式で記述します。

invoke_kind -> String[permalink][rdoc][edit]

メソッドの種類を文字列で取得します。

ここで言うメソッドの種類というのは、OLEオートメーションクライアントの記述言語がどのような形式でサーバ呼び出しを記述すべきかを指定した属性値です。

[RETURN]
メソッドの種類を示す文字列を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.invoke_kind # => "FUNC"

返送値は以下のいずれかとなります。値の意味は WIN32OLE_METHOD#invkindの説明を参照してください。

PORPERTY

INVOKE_PROPETYGETとINVOKE_PROPETYPUTの両方が設定されています。

PROPERTYGET

INVOKE_PROPETYGETが設定されています。

PROPERTYPUT

INVOKE_PROPERTYPUTが設定されています。

PROPERTYPUTREF

INVOKE_PROPERTYPUTREFが設定されています。

FUNC

INVOKE_FUNCが設定されています。

UNKNOWN

上記のいずれにも当てはまりません。

[SEE_ALSO] WIN32OLE_METHOD#invkind

name -> String[permalink][rdoc][edit]
to_s -> String

メソッド名を取得します。

[RETURN]
メソッド名を文字列で返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
puts method.name # => SaveAs
offset_vtbl -> Integer[permalink][rdoc][edit]

このメソッドのVTBLのオフセットを取得します。

VTBLはC++やCでメソッドを呼び出すために利用する関数ポインタのテーブルです。

[RETURN]
メソッドのVTBL上のオフセットを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.offset_vtbl # => 40
params -> [WIN32OLE_PARAM][permalink][rdoc][edit]

メソッドのパラメータ情報を取得します。

このメソッドのパラメータをWIN32OLE_PARAMの配列として返します。配列の最初の要素が最左端のパラメータに対応します。

[RETURN]
WIN32OLE_PARAMの配列。無引数のメソッドであれば要素数0の配列を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
p method.params # => [Filename, FileFormat, Password, WriteResPassword,
                      ReadOnlyRecommended, CreateBackup, AccessMode,
                      ConflictResolution, AddToMru, TextCodepage,
                      TextVisualLayout]
return_type -> String[permalink][rdoc][edit]

メソッドの返り値の型名を取得します。

[RETURN]
返り値の型名を示す文字列を返します。
[EXCEPTION] WIN32OLERuntimeError:
メソッドの型情報を取得できなかった場合に通知します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
method = WIN32OLE_METHOD.new(tobj, 'Visible')
puts method.return_type # => BOOL

OLEオートメーションの型名は、対応するWIN32OLE::VARIANTの定数の先頭の「VT_」を削除した名称を持ちます。

たとえば、32ビット符号付き整数であれば「I4」となります。

[SEE_ALSO] WIN32OLE::VARIANT

return_type_detail -> [String][permalink][rdoc][edit]

返り値の型と属性を取得します。

[RETURN]
返り値の型と属性を文字列配列で返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
method = WIN32OLE_METHOD.new(tobj, 'Workbooks')
p method.return_type_detail # => ["PTR", "USERDEFINED", "Workbooks"]

属性が付加されていない場合は、WIN32OLE_METHOD#return_typeを要素とした配列が返ります。

返り値の取り得る属性値はCOMのIDL(インターフェイス定義言語)によって規定されています。

[SEE_ALSO] http://msdn.microsoft.com/en-us/library/aa367042(VS.85).aspx

return_vtype -> Integer[permalink][rdoc][edit]

メソッドの返り値の型を示す数値を取得します。

[RETURN]
返り値の型を示す数値(VARENUM)を返します。
[EXCEPTION] WIN32OLERuntimeError:
メソッドの型情報を取得できなかった場合に通知します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
method = WIN32OLE_METHOD.new(tobj, 'Visible')
puts method.return_vtype # => 11

VARENUMの定義は、Platform SDKのwtypes.hにあります。

size_opt_params -> Integer | nil[permalink][rdoc][edit]

オプションパラメータ数を取得します。

[RETURN]
オプションパラメータ数を整数で返します。メソッドの詳細情報を取得できない場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
puts method.size_opt_params # => 5
size_params -> Integer | nil[permalink][rdoc][edit]

パラメータ数を取得します。

[RETURN]
パラメータ数を整数で返します。メソッドの詳細情報を取得できない場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
puts method.size_params # => 12
visible? -> bool[permalink][rdoc][edit]

このメソッドがクライアントに対して公開されているか(可視性を持つか)どうかを返します。

[RETURN]
メソッドが公開されていれば真。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Workbooks')
method = WIN32OLE_METHOD.new(tobj, 'Add')
puts method.visible? # => true