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

class WIN32OLE_PARAM

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

要約

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

WIN32OLE_PARAMは、WIN32OLE_METHODのパラメータのメタデータを保持し ます。

サンプルコード

tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
param1 = method.params[0]
puts param1.name # => Filename

@see WIN32OLE_METHOD

目次

特異メソッド
new
インスタンスメソッド
default input? name to_s ole_type ole_type_detail optional? output? retval?

特異メソッド

new(ole_method, index) -> WIN32OLE_PARAM[permalink][rdoc]

メソッドとパラメータ位置を指定してWIN32OLE_PARAMのインスタンスを作成します。

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

[PARAM] ole_method:
パラメータを取得するWIN32OLE_METHODのインスタンス。
[PARAM] index:
パラメータの位置。最左端を1とします。
[RETURN]
メソッドの指定位置のパラメータの情報を持つオブジェクトを返します。
[EXCEPTION] TypeError:
ole_methodパラメータがWIN32OLE_METHODのインスタンスではありません。
[EXCEPTION] IndexError:
indexパラメータが1からパラメータの数の範囲にありません。
[EXCEPTION] RuntimeError:
該当メソッドのメタデータが取得できません。
excel = WIN32OLE.new('Excel.Application')
method = excel.ole_method('Run')
param1 = WIN32OLE_PARAM.new(method, 1)
puts "#{param1.ole_type} #{param1.name}"

インスタンスメソッド

default -> object | nil[permalink][rdoc]

パラメータを指定しなかった場合の既定値を取得します。

当パラメータが必須パラメータの場合はnilを返します。

[RETURN]
パラメータを指定しなかった場合の既定値。必須パラメータならばnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
method.params.each do |param|
  if param.default
    puts "#{param.name} (= #{param.default})"
  else
    puts "#{param}"
  end
end
input? -> bool[permalink][rdoc]

パラメータがクライアントからサーバへ与えるものかを判定します。

OLEオートメーションのパラメータは、in(クライアントからサーバへ与える。 WIN32OLE_PARAM#input?が真)、out(サーバがクライアントへ与える。 WIN32OLE_PARAM#output?が真)および、inout(クライアントからサーバ へ与え、サーバがクライアントへ与える)の3種類の方向属性のいずれかを持ち ます。

input?メソッドはin属性またはinout属性なら真を返します。

[RETURN]
メソッドの方向属性がinまたはinoutならば真を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
param1 = method.params[0]
puts param1.input? # => true

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

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

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

[RETURN]
パラメータ名を返します。名前付き引数形式でメソッドを呼び出すときに指定します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
param1 = method.params[0]
puts param1.name # => Filename
ole_type -> String[permalink][rdoc]

パラメータの型名を取得します。

[RETURN]
パラメータの型名を示す文字列を返します。 パラメータの型情報が見つからない場合は、"unknown type"を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
param1 = method.params[0]
puts param1.ole_type # => VARIANT

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

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

[SEE_ALSO] WIN32OLE::VARIANT

ole_type_detail -> [String][permalink][rdoc]

パラメータの属性を取得します。

[RETURN]
型の属性を文字列配列で返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'IWorksheetFunction')
method = WIN32OLE_METHOD.new(tobj, 'SumIf')
param1 = method.params[0]
p param1.ole_type_detail # => ["PTR", "USERDEFINED", "Range"]

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

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

optional? -> bool[permalink][rdoc]

パラメータがオプションかどうかを取得します。

[RETURN]
パラメータがオプション(省略可能)であれば真を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
param1 = method.params[0]
puts "#{param1.name} #{param1.optional?}" # => Filename true
output? -> bool[permalink][rdoc]

パラメータがクライアントからの結果を受け取るためのものかを判定します。

OLEオートメーションのパラメータは、in(クライアントからサーバへ与える。 WIN32OLE_PARAM#input?が真)、out(サーバがクライアントへ与える。 WIN32OLE_PARAM#output?が真)および、inout(クライアントからサーバ へ与え、サーバがクライアントへ与える)の3種類の方向属性のいずれかを持ち ます。

output?メソッドはout属性またはinout属性なら真を返します。

[RETURN]
メソッドの方向属性がoutまたはinoutならば真を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'DWebBrowserEvents')
method = WIN32OLE_METHOD.new(tobj, 'NewWindow')
method.params.each do |param|
  puts "#{param.name} #{param.output?}"
end

The result of above script is following:
  URL false
  Flags false
  TargetFrameName false
  PostData false
  Headers false
  Processed true

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

retval? -> bool[permalink][rdoc]

パラメータが戻り値かどうかを判定します。

OLEオートメーションの規定では、メソッドの戻り値は引数リストの最右端のパ ラメータをout属性(WIN32OLE_PARAM#output?が真)とすることで実現し ます。ただし、そのパラメータをOLEオートメーション呼び出しを記述する言語 が戻り値のように扱うか、それとも引数リストに並べるかはretval属性によっ て決定されます。

retval?メソッドは、戻り値として記述する場合に真となります。

[RETURN]
パラメータが戻り値として扱われる場合に真を返します。
tobj = WIN32OLE_TYPE.new('DirectX 7 for Visual Basic Type Library',
                         'DirectPlayLobbyConnection')
method = WIN32OLE_METHOD.new(tobj, 'GetPlayerShortName')
param = method.params[0]
puts "#{param.name} #{param.retval?}"  # => name true

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