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(ole_method, index) -> WIN32OLE_PARAM
[permalink][rdoc]メソッドとパラメータ位置を指定してWIN32OLE_PARAMのインスタンスを作成します。
アプリケーションプログラムでは、WIN32OLE_PARAMオブジェクトをnewメソッドで生成するよりも、WIN32OLE_METHOD#paramsを参照するほうが簡単です。
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を返します。
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属性なら真を返します。
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
パラメータ名を取得します。
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]パラメータの型名を取得します。
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]パラメータの属性を取得します。
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]パラメータがオプションかどうかを取得します。
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属性なら真を返します。
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?メソッドは、戻り値として記述する場合に真となります。
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