Ruby 4.0 リファレンスマニュアル

singleton method WIN32OLE_RECORD.new

new(typename, obj) -> WIN32OLE_RECORDRuby 3.0 から[permalink][rdoc][edit]

WIN32OLE_RECORDオブジェクトを生成します。

[PARAM] typename:
構造体名を文字列またはシンボルで指定します。
[PARAM] obj:
WIN32OLEオブジェクトまたはWIN32OLE_TYPELIBオブジェクトを指定します。typenameで指定した構造体の型情報を取得するために利用します。
[RETURN]
生成したWIN32OLE_RECORDオブジェクトを返します。
[EXCEPTION] ArgumentError:
typenameがStringまたはSymbolではありません。あるいは obj がWIN32OLEオブジェクトまたはWIN32OLE_TYPELIBオブジェクトのいずれでもありません。
[EXCEPTION] WIN32OLERuntimeError:
objからITypeLibインタフェースの取得に失敗しました。あるいはtypenameに対応する IRecordInfoインタフェースの取得に失敗しました。

VB.NETのComServerプロジェクトで、以下のBook構造体を持つCOMサーバがあるとします。

Imports System.Runtime.InteropServices
Public Class ComClass
    Public Structure Book
        <MarshalAs(UnmanagedType.BStr)> _
        Public title As String
        Public cost As Integer
    End Structure
End Class

このとき、次のようにしてWIN32OLE_RECORDオブジェクトを生成できます。

require 'win32ole'
obj = WIN32OLE.new('ComServer.ComClass')
book1 = WIN32OLE_RECORD.new('Book', obj) # => WIN32OLE_RECORDオブジェクト
tlib = obj.ole_typelib
book2 = WIN32OLE_RECORD.new('Book', tlib) # => WIN32OLE_RECORDオブジェクト