Class | WIN32OLE_METHOD
In: | win32ole/win32ole.c
Parent: | Object

`WIN32OLE_METHOD` objects represent OLE method information.

### Methods

dispid event? event_interface helpcontext helpfile helpstring invkind invoke_kind name new offset_vtbl params return_type return_type_detail return_vtype size_opt_params size_params to_s visible?

### Public Class methods

WIN32OLE_METHOD.new(ole_type, method) → WIN32OLE_METHOD object

Returns a new WIN32OLE_METHOD object which represents the information about OLE method. The first argument ole_type specifies WIN32OLE_TYPE object. The second argument method specifies OLE method name defined OLE class which represents WIN32OLE_TYPE object.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
       method = WIN32OLE_METHOD.new(tobj, 'SaveAs')

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD.new(ole_type,  method) -> WIN32OLE_METHOD object
     *
     *  Returns a new WIN32OLE_METHOD object which represents the information
     *  about OLE method.
     *  The first argument <i>ole_type</i> specifies WIN32OLE_TYPE object.
     *  The second argument <i>method</i> specifies OLE method name defined OLE class
     *  which represents WIN32OLE_TYPE object.
     *
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
     */
    static VALUE
    folemethod_initialize(self, oletype, method)
        VALUE self;
        VALUE oletype;
        VALUE method;
    {
        struct oletypedata *ptype;
        VALUE obj = Qnil;
        if (rb_obj_is_kind_of(oletype, cWIN32OLE_TYPE)) {
            Check_SafeStr(method);
            Data_Get_Struct(oletype, struct oletypedata, ptype);
            obj = olemethod_from_typeinfo(self, ptype->pTypeInfo, method);
            if (obj == Qnil) {
                rb_raise(eWIN32OLE_RUNTIME_ERROR, "not found %s",
                         StringValuePtr(method));
            }
        }
        else {
            rb_raise(rb_eTypeError, "1st argument should be WIN32OLE_TYPE object");
        }
        return obj;
    }

### Public Instance methods

WIN32OLE_METHOD#dispid

Returns dispatch ID.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.dispid # => 181

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#dispid
     *
     *  Returns dispatch ID.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.dispid # => 181
     */
    static VALUE
    folemethod_dispid(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_dispid(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#event?

Returns true if the method is event.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
       method = WIN32OLE_METHOD.new(tobj, 'SheetActivate')
       puts method.event? # => true

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#event?
     *
     *  Returns true if the method is event.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *     method = WIN32OLE_METHOD.new(tobj, 'SheetActivate')
     *     puts method.event? # => true
     *
     */
    static VALUE
    folemethod_event(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        if (!pmethod->pOwnerTypeInfo)
            return Qfalse;
        return ole_method_event(pmethod->pOwnerTypeInfo,
                                pmethod->index,
                                rb_ivar_get(self, rb_intern("name")));
    }

WIN32OLE_METHOD#event_interface

Returns event interface name if the method is event.

      tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
      method = WIN32OLE_METHOD.new(tobj, 'SheetActivate')
      puts method.event_interface # =>  WorkbookEvents

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#event_interface
     *
     *  Returns event interface name if the method is event.
     *    tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *    method = WIN32OLE_METHOD.new(tobj, 'SheetActivate')
     *    puts method.event_interface # =>  WorkbookEvents
     */
    static VALUE
    folemethod_event_interface(self)
        VALUE self;
    {
        BSTR name;
        struct olemethoddata *pmethod;
        HRESULT hr;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        if(folemethod_event(self) == Qtrue) {
            hr = ole_docinfo_from_type(pmethod->pTypeInfo, &name, NULL, NULL, NULL);
            if(SUCCEEDED(hr))
                return WC2VSTR(name);
        }
        return Qnil;
    }

WIN32OLE_METHOD#helpcontext

Returns help context.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.helpcontext # => 65717

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#helpcontext
     *
     *  Returns help context.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.helpcontext # => 65717
     */
    static VALUE
    folemethod_helpcontext(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_helpcontext(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#helpfile

Returns help file. If help file is not found, then the method returns nil.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.helpfile # => C:\...\VBAXL9.CHM

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#helpfile
     *
     *  Returns help file. If help file is not found, then
     *  the method returns nil.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.helpfile # => C:\...\VBAXL9.CHM
     */
    static VALUE
    folemethod_helpfile(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);

        return ole_method_helpfile(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#helpstring

Returns help string of OLE method. If the help string is not found, then the method returns nil.

       tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'IWebBrowser')
       method = WIN32OLE_METHOD.new(tobj, 'Navigate')
       puts method.helpstring # => Navigates to a URL or file.

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#helpstring
     *
     *  Returns help string of OLE method. If the help string is not found,
     *  then the method returns nil.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'IWebBrowser')
     *     method = WIN32OLE_METHOD.new(tobj, 'Navigate')
     *     puts method.helpstring # => Navigates to a URL or file.
     *
     */
    static VALUE
    folemethod_helpstring(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_helpstring(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_MTHOD#invkind

Returns the method invoke kind.

      tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
      method = WIN32OLE_METHOD.new(tobj, 'Add')
      puts method.invkind # => 1

[Source]

    /*
     *   call-seq:
     *      WIN32OLE_MTHOD#invkind
     *
     *   Returns the method invoke kind.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.invkind # => 1
     *
     */
    static VALUE
    folemethod_invkind(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_invkind(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#invoke_kind

Returns the method kind string. The string is "UNKNOWN" or "PROPERTY" or "PROPERTY" or "PROPERTYGET" or "PROPERTYPUT" or "PROPERTYPPUTREF" or "FUNC".

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.invoke_kind # => "FUNC"

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#invoke_kind
     *
     *  Returns the method kind string. The string is "UNKNOWN" or "PROPERTY"
     *  or "PROPERTY" or "PROPERTYGET" or "PROPERTYPUT" or "PROPERTYPPUTREF"
     *  or "FUNC".
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.invoke_kind # => "FUNC"
     */
    static VALUE
    folemethod_invoke_kind(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_invoke_kind(pmethod->pTypeInfo, pmethod->index);
    }

name()

call-seq

       WIN32OLE_METHOD#name

Returns the name of the method.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
       method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
       puts method.name # => SaveAs

[Source]

    /*
     *  call-seq
     *     WIN32OLE_METHOD#name
     *
     *  Returns the name of the method.
     *
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
     *     puts method.name # => SaveAs
     *
     */
    static VALUE
    folemethod_name(self)
        VALUE self;
    {
        return rb_ivar_get(self, rb_intern("name"));
    }

WIN32OLE_METHOD#offset_vtbl

Returns the offset ov VTBL.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.offset_vtbl # => 40

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#offset_vtbl
     *
     *  Returns the offset ov VTBL.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.offset_vtbl # => 40
     */
    static VALUE
    folemethod_offset_vtbl(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_offset_vtbl(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#params

returns array of WIN32OLE_PARAM object corresponding with method parameters.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
       method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
       p method.params # => [Filename, FileFormat, Password, WriteResPassword,
                             ReadOnlyRecommended, CreateBackup, AccessMode,
                             ConflictResolution, AddToMru, TextCodepage,
                             TextVisualLayout]

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#params
     *
     *  returns array of WIN32OLE_PARAM object corresponding with method parameters.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
     *     p method.params # => [Filename, FileFormat, Password, WriteResPassword,
     *                           ReadOnlyRecommended, CreateBackup, AccessMode,
     *                           ConflictResolution, AddToMru, TextCodepage,
     *                           TextVisualLayout]
     */
    static VALUE
    folemethod_params(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_params(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#return_type

Returns string of return value type of method.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.return_type # => Workbook

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#return_type
     *
     *  Returns string of return value type of method.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.return_type # => Workbook
     *
     */
    static VALUE
    folemethod_return_type(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_return_type(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#return_type_detail

Returns detail information of return value type of method. The information is array.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       p method.return_type_detail # => ["PTR", "USERDEFINED", "Workbook"]

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#return_type_detail
     *
     *  Returns detail information of return value type of method.
     *  The information is array.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     p method.return_type_detail # => ["PTR", "USERDEFINED", "Workbook"]
     */
    static VALUE
    folemethod_return_type_detail(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_return_type_detail(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#return_vtype

Returns number of return value type of method.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.return_vtype # => 26

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#return_vtype
     *
     *  Returns number of return value type of method.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.return_vtype # => 26
     *
     */
    static VALUE
    folemethod_return_vtype(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_return_vtype(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#size_opt_params

Returns the size of optional parameters.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
       method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
       puts method.size_opt_params # => 4

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#size_opt_params
     *
     *  Returns the size of optional parameters.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
     *     puts method.size_opt_params # => 4
     */
    static VALUE
    folemethod_size_opt_params(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_size_opt_params(pmethod->pTypeInfo, pmethod->index);
    }

WIN32OLE_METHOD#size_params

Returns the size of arguments of the method.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
       method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
       puts method.size_params # => 11

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#size_params
     *
     *  Returns the size of arguments of the method.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook')
     *     method = WIN32OLE_METHOD.new(tobj, 'SaveAs')
     *     puts method.size_params # => 11
     *
     */
    static VALUE
    folemethod_size_params(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_size_params(pmethod->pTypeInfo, pmethod->index);
    }

to_s()

Alias for name

WIN32OLE_METHOD#visible?

Returns true if the method is public.

       tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
       method = WIN32OLE_METHOD.new(tobj, 'Add')
       puts method.visible? # => true

[Source]

    /*
     *  call-seq:
     *     WIN32OLE_METHOD#visible?
     *
     *  Returns true if the method is public.
     *     tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbooks')
     *     method = WIN32OLE_METHOD.new(tobj, 'Add')
     *     puts method.visible? # => true
     */
    static VALUE
    folemethod_visible(self)
        VALUE self;
    {
        struct olemethoddata *pmethod;
        Data_Get_Struct(self, struct olemethoddata, pmethod);
        return ole_method_visible(pmethod->pTypeInfo, pmethod->index);
    }

[Validate]