要約
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