Class: WIN32OLE_TYPE
- Inherits:
-
Object
- Object
- WIN32OLE_TYPE
- Defined in:
- win32ole.c,
win32ole.c
Overview
WIN32OLE_TYPE
objects represent OLE type libarary information.
Class Method Summary collapse
-
.ole_classes(typelib) ⇒ Object
Returns array of WIN32OLE_TYPE objects defined by the typelib type library.
-
.progids ⇒ Object
Returns array of ProgID.
-
.typelibs ⇒ Object
Returns array of type libraries.
Instance Method Summary collapse
-
#default_event_sources ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object and having IMPLTYPEFLAG_FSOURCE and IMPLTYPEFLAG_FDEFAULT.
-
#default_ole_types ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object and having IMPLTYPEFLAG_FDEFAULT.
-
#guid ⇒ Object
Returns GUID.
-
#helpcontext ⇒ Object
Returns helpcontext.
-
#helpfile ⇒ Object
Returns helpfile path.
-
#helpstring ⇒ Object
Returns help string.
-
#implemented_ole_types ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object.
-
#new(typelib, ole_class) ⇒ WIN32OLE_TYPE object
constructor
Returns a new WIN32OLE_TYPE object.
-
#inspect ⇒ String
Returns the type name with class name.
-
#major_version ⇒ Object
Returns major version.
-
#minor_version ⇒ Object
Returns minor version.
-
#name ⇒ Object
(also: #to_s)
Returns OLE type name.
-
#ole_methods ⇒ Object
Returns array of WIN32OLE_METHOD objects which represent OLE method defined in OLE type library.
-
#ole_type ⇒ Object
returns type of OLE class.
-
#ole_typelib ⇒ Object
Returns the WIN32OLE_TYPELIB object which is including the WIN32OLE_TYPE object.
-
#progid ⇒ Object
Returns ProgID if it exists.
-
#source_ole_types ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object and having IMPLTYPEFLAG_FSOURCE.
-
#src_type ⇒ Object
Returns source class when the OLE class is ‘Alias’.
-
#typekind ⇒ Object
Returns number which represents type.
-
#variables ⇒ Object
Returns array of WIN32OLE_VARIABLE objects which represent variables defined in OLE class.
-
#visible?(# = > true or false) ⇒ Boolean
Returns true if the OLE class is public.
Constructor Details
#new(typelib, ole_class) ⇒ WIN32OLE_TYPE object
Returns a new WIN32OLE_TYPE object. The first argument typelib specifies OLE type library name. The second argument specifies OLE class name.
WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Application')
# => WIN32OLE_TYPE object of Application class of Excel.
5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 |
# File 'win32ole.c', line 5584
static VALUE
foletype_initialize(VALUE self, VALUE typelib, VALUE oleclass)
{
VALUE file;
OLECHAR * pbuf;
ITypeLib *pTypeLib;
HRESULT hr;
SafeStringValue(oleclass);
SafeStringValue(typelib);
file = typelib_file(typelib);
if (file == Qnil) {
file = typelib;
}
pbuf = ole_vstr2wc(file);
hr = LoadTypeLibEx(pbuf, REGKIND_NONE, &pTypeLib);
if (FAILED(hr))
ole_raise(hr, eWIN32OLERuntimeError, "failed to LoadTypeLibEx");
SysFreeString(pbuf);
if (oleclass_from_typelib(self, pTypeLib, oleclass) == Qfalse) {
OLE_RELEASE(pTypeLib);
rb_raise(eWIN32OLERuntimeError, "not found `%s` in `%s`",
StringValuePtr(oleclass), StringValuePtr(typelib));
}
OLE_RELEASE(pTypeLib);
return self;
}
|
Class Method Details
.ole_classes(typelib) ⇒ Object
Returns array of WIN32OLE_TYPE objects defined by the typelib type library. This method will be OBSOLETE. Use WIN32OLE_TYPELIB.new(typelib).ole_classes instead.
4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 |
# File 'win32ole.c', line 4833
static VALUE
foletype_s_ole_classes(VALUE self, VALUE typelib)
{
VALUE obj;
/*
rb_warn("%s is obsolete; use %s instead.",
"WIN32OLE_TYPE.ole_classes",
"WIN32OLE_TYPELIB.new(typelib).ole_types");
*/
obj = rb_funcall(cWIN32OLE_TYPELIB, rb_intern("new"), 1, typelib);
return rb_funcall(obj, rb_intern("ole_types"), 0);
}
|
.progids ⇒ Object
Returns array of ProgID.
4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 |
# File 'win32ole.c', line 4872
static VALUE
foletype_s_progids(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_val2(hclsid, "ProgID")) != Qnil)
rb_ary_push(progids, v);
if ((v = reg_get_val2(hclsid, "VersionIndependentProgID")) != Qnil)
rb_ary_push(progids, v);
RegCloseKey(hclsid);
}
RegCloseKey(hclsids);
return progids;
}
|
.typelibs ⇒ Object
Returns array of type libraries. This method will be OBSOLETE. Use WIN32OLE_TYPELIB.typelibs.collect{|t| t.name} instead.
4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 |
# File 'win32ole.c', line 4855
static VALUE
foletype_s_typelibs(VALUE self)
{
/*
rb_warn("%s is obsolete. use %s instead.",
"WIN32OLE_TYPE.typelibs",
"WIN32OLE_TYPELIB.typelibs.collect{t|t.name}");
*/
return rb_eval_string("WIN32OLE_TYPELIB.typelibs.collect{|t|t.name}");
}
|
Instance Method Details
#default_event_sources ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object and having IMPLTYPEFLAG_FSOURCE and IMPLTYPEFLAG_FDEFAULT.
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', "InternetExplorer")
p tobj.default_event_sources # => [#<WIN32OLE_TYPE:DWebBrowserEvents2>]
6106 6107 6108 6109 6110 6111 6112 |
# File 'win32ole.c', line 6106
static VALUE
foletype_default_event_sources(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_impl_ole_types(ptype->pTypeInfo, IMPLTYPEFLAG_FSOURCE|IMPLTYPEFLAG_FDEFAULT);
}
|
#default_ole_types ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object and having IMPLTYPEFLAG_FDEFAULT.
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', "InternetExplorer")
p tobj.default_ole_types
# => [#<WIN32OLE_TYPE:IWebBrowser2>, #<WIN32OLE_TYPE:DWebBrowserEvents2>]
6124 6125 6126 6127 6128 6129 6130 |
# File 'win32ole.c', line 6124
static VALUE
foletype_default_ole_types(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_impl_ole_types(ptype->pTypeInfo, IMPLTYPEFLAG_FDEFAULT);
}
|
#guid ⇒ Object
Returns GUID.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Application')
puts tobj.guid # => {00024500-0000-0000-C000-000000000046}
5715 5716 5717 5718 5719 5720 5721 |
# File 'win32ole.c', line 5715
static VALUE
foletype_guid(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_guid(ptype->pTypeInfo);
}
|
#helpcontext ⇒ Object
Returns helpcontext. If helpcontext is not found, then returns nil.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Worksheet')
puts tobj.helpfile # => 131185
5996 5997 5998 5999 6000 6001 6002 |
# File 'win32ole.c', line 5996
static VALUE
foletype_helpcontext(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_helpcontext(ptype->pTypeInfo);
}
|
#helpfile ⇒ Object
Returns helpfile path. If helpfile is not found, then returns nil.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Worksheet')
puts tobj.helpfile # => C:\...\VBAXL9.CHM
5968 5969 5970 5971 5972 5973 5974 |
# File 'win32ole.c', line 5968
static VALUE
foletype_helpfile(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_helpfile(ptype->pTypeInfo);
}
|
#helpstring ⇒ Object
Returns help string.
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'IWebBrowser')
puts tobj.helpstring # => Web Browser interface
5904 5905 5906 5907 5908 5909 5910 |
# File 'win32ole.c', line 5904
static VALUE
foletype_helpstring(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_helpstring(ptype->pTypeInfo);
}
|
#implemented_ole_types ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Worksheet')
p tobj.implemented_ole_types # => [_Worksheet, DocEvents]
6071 6072 6073 6074 6075 6076 6077 |
# File 'win32ole.c', line 6071
static VALUE
foletype_impl_ole_types(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_impl_ole_types(ptype->pTypeInfo, 0);
}
|
#inspect ⇒ String
Returns the type name with class name.
ie = WIN32OLE.new('InternetExplorer.Application')
ie.ole_type.inspect => #<WIN32OLE_TYPE:IWebBrowser2>
6141 6142 6143 6144 6145 |
# File 'win32ole.c', line 6141
static VALUE
foletype_inspect(VALUE self)
{
return default_inspect(self, "WIN32OLE_TYPE");
}
|
#major_version ⇒ Object
Returns major version.
tobj = WIN32OLE_TYPE.new('Microsoft Word 10.0 Object Library', 'Documents')
puts tobj.major_version # => 8
5815 5816 5817 5818 5819 5820 5821 |
# File 'win32ole.c', line 5815
static VALUE
foletype_major_version(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_major_version(ptype->pTypeInfo);
}
|
#minor_version ⇒ Object
Returns minor version.
tobj = WIN32OLE_TYPE.new('Microsoft Word 10.0 Object Library', 'Documents')
puts tobj.minor_version # => 2
5845 5846 5847 5848 5849 5850 5851 |
# File 'win32ole.c', line 5845
static VALUE
foletype_minor_version(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_minor_version(ptype->pTypeInfo);
}
|
#name ⇒ Object Also known as: to_s
Returns OLE type name.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Application')
puts tobj.name # => Application
5620 5621 5622 5623 5624 |
# File 'win32ole.c', line 5620
static VALUE
foletype_name(VALUE self)
{
return rb_ivar_get(self, rb_intern("name"));
}
|
#ole_methods ⇒ Object
Returns array of WIN32OLE_METHOD objects which represent OLE method defined in OLE type library.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Worksheet')
methods = tobj.ole_methods.collect{|m|
m.name
}
# => ['Activate', 'Copy', 'Delete',....]
6229 6230 6231 6232 6233 6234 6235 |
# File 'win32ole.c', line 6229
static VALUE
foletype_methods(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);
}
|
#ole_type ⇒ Object
returns type of OLE class.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Application')
puts tobj.ole_type # => Class
5680 5681 5682 5683 5684 5685 5686 |
# File 'win32ole.c', line 5680
static VALUE
foletype_ole_type(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_ole_type(ptype->pTypeInfo);
}
|
#ole_typelib ⇒ Object
Returns the WIN32OLE_TYPELIB object which is including the WIN32OLE_TYPE object. If it is not found, then returns nil.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Worksheet')
puts tobj.ole_typelib # => 'Microsoft Excel 9.0 Object Library'
6013 6014 6015 6016 6017 6018 6019 |
# File 'win32ole.c', line 6013
static VALUE
foletype_ole_typelib(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_typelib_from_itypeinfo(ptype->pTypeInfo);
}
|
#progid ⇒ Object
Returns ProgID if it exists. If not found, then returns nil.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Application')
puts tobj.progid # => Excel.Application.9
5750 5751 5752 5753 5754 5755 5756 |
# File 'win32ole.c', line 5750
static VALUE
foletype_progid(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_progid(ptype->pTypeInfo);
}
|
#source_ole_types ⇒ Object
Returns the array of WIN32OLE_TYPE object which is implemented by the WIN32OLE_TYPE object and having IMPLTYPEFLAG_FSOURCE.
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', "InternetExplorer")
p tobj.source_ole_types
# => [#<WIN32OLE_TYPE:DWebBrowserEvents2>, #<WIN32OLE_TYPE:DWebBrowserEvents>]
6089 6090 6091 6092 6093 6094 6095 |
# File 'win32ole.c', line 6089
static VALUE
foletype_source_ole_types(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_impl_ole_types(ptype->pTypeInfo, IMPLTYPEFLAG_FSOURCE);
}
|
#src_type ⇒ Object
Returns source class when the OLE class is ‘Alias’.
tobj = WIN32OLE_TYPE.new('Microsoft Office 9.0 Object Library', 'MsoRGBType')
puts tobj.src_type # => I4
5939 5940 5941 5942 5943 5944 5945 |
# File 'win32ole.c', line 5939
static VALUE
foletype_src_type(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_src_type(ptype->pTypeInfo);
}
|
#typekind ⇒ Object
Returns number which represents type.
tobj = WIN32OLE_TYPE.new('Microsoft Word 10.0 Object Library', 'Documents')
puts tobj.typekind # => 4
5876 5877 5878 5879 5880 5881 5882 |
# File 'win32ole.c', line 5876
static VALUE
foletype_typekind(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_typekind(ptype->pTypeInfo);
}
|
#variables ⇒ Object
Returns array of WIN32OLE_VARIABLE objects which represent variables defined in OLE class.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'XlSheetType')
vars = tobj.variables
vars.each do |v|
puts "#{v.name} = #{v.value}"
end
The result of above sample script is follows:
xlChart = -4109
xlDialogSheet = -4116
xlExcel4IntlMacroSheet = 4
xlExcel4MacroSheet = 3
xlWorksheet = -4167
6209 6210 6211 6212 6213 6214 6215 |
# File 'win32ole.c', line 6209
static VALUE
foletype_variables(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_variables(ptype->pTypeInfo);
}
|
#visible?(# = > true or false) ⇒ Boolean
Returns true if the OLE class is public.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Application')
puts tobj.visible # => true
5785 5786 5787 5788 5789 5790 5791 |
# File 'win32ole.c', line 5785
static VALUE
foletype_visible(VALUE self)
{
struct oletypedata *ptype;
Data_Get_Struct(self, struct oletypedata, ptype);
return ole_type_visible(ptype->pTypeInfo);
}
|