WIN32OLE_TYPE (Class)

In: win32ole/win32ole.c
Parent: Object

Methods

Public Class methods

new(p1, p2)

WIN32OLE.ole_classes(typelibrary)


Returns array of WIN32OLE_TYPE objects defined by type library.

[Source]

/*
 * WIN32OLE.ole_classes(typelibrary)
 * ----
 * Returns array of WIN32OLE_TYPE objects defined by type library.
 */
static VALUE
foletype_s_ole_classes(self, typelib)
    VALUE self;
    VALUE typelib;
{
    VALUE file, classes;
    OLECHAR * pbuf;
    ITypeLib *pTypeLib;
    HRESULT hr;

    rb_secure(4);
    classes = rb_ary_new();
    if(TYPE(typelib) == T_STRING) {
        file = typelib_file(typelib);
        if (file == Qnil) {
            file = typelib;
        }
        pbuf = ole_mb2wc(StringValuePtr(file), -1);
        hr = LoadTypeLibEx(pbuf, REGKIND_NONE, &pTypeLib);
        if (FAILED(hr))
          ole_raise(hr, eWIN32OLE_RUNTIME_ERROR, "failed to LoadTypeLibEx");
        SysFreeString(pbuf);
        ole_classes_from_typelib(pTypeLib, classes);
        OLE_RELEASE(pTypeLib);
    } else {
        rb_raise(rb_eTypeError, "1st argument should be TypeLib string");
    }
    return classes;
}

WIN32OLE_TYPE.progids


Returns array of ProgID.

[Source]

/*
 * WIN32OLE_TYPE.progids
 * ---
 * Returns array of ProgID.
 */
static VALUE
foletype_s_progids(self)
    VALUE self;
{
    HKEY hclsids, hclsid;
    DWORD i;
    LONG err;
    VALUE clsid;
    VALUE v = rb_str_new2("");
    VALUE progids = rb_ary_new();

    err = reg_open_key(HKEY_CLASSES_ROOT, "CLSID", &hclsids);
    if(err != ERROR_SUCCESS) {
        return progids;
    }
    for(i = 0; ; i++) {
        clsid = reg_enum_key(hclsids, i);
        if (clsid == Qnil)
            break;
        err = reg_open_vkey(hclsids, clsid, &hclsid);
        if (err != ERROR_SUCCESS)
            continue;
        if ((v = reg_get_val(hclsid, "ProgID")) != Qnil) 
            rb_ary_push(progids, v);
        if ((v = reg_get_val(hclsid, "VersionIndependentProgID")) != Qnil)
            rb_ary_push(progids, v);
        RegCloseKey(hclsid);
    }
    RegCloseKey(hclsids);
    return progids;
}

WIN32OLE_TYPE.typelibs


Returns array of type libraries.

[Source]

/*
 * WIN32OLE_TYPE.typelibs
 * ----
 * Returns array of type libraries.
 */
static VALUE
foletype_s_typelibs(self)
    VALUE self;
{
    HKEY htypelib, hclsid;
    double fversion;
    DWORD i, j;
    LONG err;
    VALUE clsid;
    VALUE ver;
    VALUE v = Qnil;
    VALUE typelibs = rb_ary_new();

    err = reg_open_key(HKEY_CLASSES_ROOT, "TypeLib", &htypelib);
    if(err != ERROR_SUCCESS) {
        return typelibs;
    }
    for(i = 0; ; i++) {
        clsid = reg_enum_key(htypelib, i);
        if (clsid == Qnil)
            break;
        err = reg_open_vkey(htypelib, clsid, &hclsid);
        if (err != ERROR_SUCCESS)
            continue;
        fversion = 0;
        for(j = 0; ; j++) {
            ver = reg_enum_key(hclsid, j);
            if (ver == Qnil)
                break;
            if (fversion > atof(StringValuePtr(ver)))
                continue;
            fversion = atof(StringValuePtr(ver));
            if ( (v = reg_get_val(hclsid, StringValuePtr(ver))) != Qnil ) {
                rb_ary_push(typelibs, v);
            }
        }
        RegCloseKey(hclsid);
    }
    RegCloseKey(htypelib);
    return typelibs;
}

Public Instance methods

WIN32OLE_TYPE#guid


Returns GUID.

[Source]

/*
 * WIN32OLE_TYPE#guid
 * ----
 * Returns GUID.
 */
static VALUE
foletype_guid(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_guid(ptype->pTypeInfo);
}

WIN32OLE_TYPE#helpcontext


Returns helpcontext.

[Source]

/*
 * WIN32OLE_TYPE#helpcontext
 * ---
 * Returns helpcontext.
 */
static VALUE
foletype_helpcontext(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_helpcontext(ptype->pTypeInfo);
}

WIN32OLE_TYPE#helpfile


Returns helpfile

[Source]

/*
 * WIN32OLE_TYPE#helpfile
 * ----
 * Returns helpfile
 */
static VALUE
foletype_helpfile(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_helpfile(ptype->pTypeInfo);
}

WIN32OLE_TYPE#helpstring


Returns help string.

[Source]

/*
 * WIN32OLE_TYPE#helpstring
 * ---
 * Returns help string.
 */
static VALUE 
foletype_helpstring(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_helpstring(ptype->pTypeInfo);
}

WIN32OLE_TYPE#major_version


Returns major version.

[Source]

/*
 * WIN32OLE_TYPE#major_version
 * ----
 * Returns major version.
 */
static VALUE
foletype_major_version(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_major_version(ptype->pTypeInfo);
}

WIN32OLE_TYPE#minor_version


Returns minor version.

[Source]

/*
 * WIN32OLE_TYPE#minor_version
 * ----
 * Returns minor version.
 */
static VALUE
foletype_minor_version(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_minor_version(ptype->pTypeInfo);
}

WIN32OLE_TYPE#name


Returns name.

[Source]

/*
 * WIN32OLE_TYPE#name
 * ---
 * Returns name.
 */
static VALUE
foletype_name(self)
    VALUE self;
{
    return rb_ivar_get(self, rb_intern("name"));
}

WIN32OLE_TYPE#ole_methods


Returns array of WIN32OLE_METHOD objects.

[Source]

/*
 * WIN32OLE_TYPE#ole_methods
 * ----
 * Returns array of WIN32OLE_METHOD objects.
 */
static VALUE
foletype_methods(argc, argv, self)
    int argc;
    VALUE *argv;
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_methods_from_typeinfo(ptype->pTypeInfo, INVOKE_FUNC | INVOKE_PROPERTYGET | INVOKE_PROPERTYPUT | INVOKE_PROPERTYPUTREF);
}

WIN32OLE_TYPE#ole_type


returns type of class.

[Source]

/*
 * WIN32OLE_TYPE#ole_type
 * ----
 * returns type of class.
 */
static VALUE
foletype_ole_type(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_ole_type(ptype->pTypeInfo);
}

WIN32OLE_TYPE#progid


Returns ProgID if it exists. If not found, then returns nil.

[Source]

/*
 * WIN32OLE_TYPE#progid
 * ----
 * Returns ProgID if it exists. If not found, then returns nil.
 */
static VALUE
foletype_progid(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_progid(ptype->pTypeInfo);
}

WIN32OLE_TYPE#src_type


Returns source class when the OLE class is ‘Alias’.

[Source]

/*
 * WIN32OLE_TYPE#src_type
 * ----
 * Returns source class when the OLE class is 'Alias'.
 */
static VALUE
foletype_src_type(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_src_type(ptype->pTypeInfo);
}
to_s()

Alias for name

WIN32OLE_TYPE#typekind


Returns number which represents type.

[Source]

/*
 * WIN32OLE_TYPE#typekind
 * ----
 * Returns number which represents type.
 */
static VALUE 
foletype_typekind(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_typekind(ptype->pTypeInfo);
}

WIN32OLE_TYPE#variables


Returns array of variables defined in OLE class.

[Source]

/*
 * WIN32OLE_TYPE#variables
 * ----
 * Returns array of variables defined in OLE class.
 */
static VALUE
foletype_variables(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_variables(ptype->pTypeInfo);
}

WIN32OLE_TYPE#visible


returns true if the OLE class is public.

[Source]

/*
 * WIN32OLE_TYPE#visible
 * ----
 * returns true if the OLE class is public.
 */
static VALUE
foletype_visible(self)
    VALUE self;
{
    struct oletypedata *ptype;
    Data_Get_Struct(self, struct oletypedata, ptype);
    return ole_type_visible(ptype->pTypeInfo);
}

[Validate]