7static void oletype_free(
void *
ptr);
8static size_t oletype_size(
const void *
ptr);
14static VALUE oleclass_from_typelib(
VALUE self, ITypeLib *pTypeLib,
VALUE oleclass);
17static VALUE ole_ole_type(ITypeInfo *pTypeInfo);
19static VALUE ole_type_guid(ITypeInfo *pTypeInfo);
21static VALUE ole_type_progid(ITypeInfo *pTypeInfo);
23static VALUE ole_type_visible(ITypeInfo *pTypeInfo);
25static VALUE ole_type_major_version(ITypeInfo *pTypeInfo);
26static VALUE foletype_major_version(
VALUE self);
27static VALUE ole_type_minor_version(ITypeInfo *pTypeInfo);
28static VALUE foletype_minor_version(
VALUE self);
29static VALUE ole_type_typekind(ITypeInfo *pTypeInfo);
31static VALUE ole_type_helpstring(ITypeInfo *pTypeInfo);
33static VALUE ole_type_src_type(ITypeInfo *pTypeInfo);
35static VALUE ole_type_helpfile(ITypeInfo *pTypeInfo);
37static VALUE ole_type_helpcontext(ITypeInfo *pTypeInfo);
39static VALUE ole_variables(ITypeInfo *pTypeInfo);
43static VALUE ole_type_impl_ole_types(ITypeInfo *pTypeInfo,
int implflags);
44static VALUE foletype_impl_ole_types(
VALUE self);
45static VALUE foletype_source_ole_types(
VALUE self);
46static VALUE foletype_default_event_sources(
VALUE self);
47static VALUE foletype_default_ole_types(
VALUE self);
52 {
NULL, oletype_free, oletype_size,},
63oletype_free(
void *
ptr)
71oletype_size(
const void *
ptr)
96 hr = pTypeLib->lpVtbl->GetDocumentation( pTypeLib,
index,
115foletype_s_ole_classes(
VALUE self,
VALUE typelib)
137foletype_s_typelibs(
VALUE self)
144 return rb_eval_string(
"WIN32OLE_TYPELIB.typelibs.collect{|t|t.name}");
154foletype_s_progids(
VALUE self)
156 HKEY hclsids, hclsid;
164 if(
err != ERROR_SUCCESS) {
172 if (
err != ERROR_SUCCESS)
180 RegCloseKey(hclsids);
215oleclass_from_typelib(
VALUE self, ITypeLib *pTypeLib,
VALUE oleclass)
227 count = pTypeLib->lpVtbl->GetTypeInfoCount(pTypeLib);
229 hr = pTypeLib->lpVtbl->GetTypeInfo(pTypeLib,
i, &
pTypeInfo);
232 hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib,
i,
238 oletype_set_member(
self,
pTypeInfo, typelib);
272 hr = LoadTypeLibEx(pbuf, REGKIND_NONE, &pTypeLib);
276 if (oleclass_from_typelib(
self, pTypeLib, oleclass) ==
Qfalse) {
294foletype_name(
VALUE self)
309 switch(pTypeAttr->typekind) {
319 case TKIND_INTERFACE:
354foletype_ole_type(
VALUE self)
371 len = StringFromGUID2(&pTypeAttr->guid, bstr,
sizeof(bstr)/
sizeof(OLECHAR));
388foletype_guid(
VALUE self)
404 hr = ProgIDFromCLSID(&pTypeAttr->guid, &pbuf);
422foletype_progid(
VALUE self)
438 if (pTypeAttr->wTypeFlags & (TYPEFLAG_FHIDDEN | TYPEFLAG_FRESTRICTED)) {
456foletype_visible(
VALUE self)
463ole_type_major_version(ITypeInfo *
pTypeInfo)
485foletype_major_version(
VALUE self)
488 return ole_type_major_version(
pTypeInfo);
492ole_type_minor_version(ITypeInfo *
pTypeInfo)
514foletype_minor_version(
VALUE self)
517 return ole_type_minor_version(
pTypeInfo);
544foletype_typekind(
VALUE self)
571foletype_helpstring(
VALUE self)
586 if(pTypeAttr->typekind != TKIND_ALIAS) {
605foletype_src_type(
VALUE self)
633foletype_helpfile(
VALUE self)
640ole_type_helpcontext(ITypeInfo *
pTypeInfo)
660foletype_helpcontext(
VALUE self)
682 for(
i = 0;
i < pTypeAttr->cVars;
i++) {
689 if(FAILED(hr) ||
len == 0 || !bstr)
723foletype_variables(
VALUE self)
742foletype_methods(
VALUE self)
758foletype_ole_typelib(
VALUE self)
765ole_type_impl_ole_types(ITypeInfo *
pTypeInfo,
int implflags)
768 ITypeInfo *pRefTypeInfo;
780 for (
i = 0;
i < pTypeAttr->cImplTypes;
i++) {
792 if ((flags & implflags) == implflags) {
815foletype_impl_ole_types(
VALUE self)
818 return ole_type_impl_ole_types(
pTypeInfo, 0);
832foletype_source_ole_types(
VALUE self)
835 return ole_type_impl_ole_types(
pTypeInfo, IMPLTYPEFLAG_FSOURCE);
848foletype_default_event_sources(
VALUE self)
851 return ole_type_impl_ole_types(
pTypeInfo, IMPLTYPEFLAG_FSOURCE|IMPLTYPEFLAG_FDEFAULT);
865foletype_default_ole_types(
VALUE self)
868 return ole_type_impl_ole_types(
pTypeInfo, IMPLTYPEFLAG_FDEFAULT);
881foletype_inspect(
VALUE self)
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
VALUE rb_cObject
Object class.
void rb_raise(VALUE exc, const char *fmt,...)
VALUE type(ANYARGS)
ANYARGS-ed function type.
HRESULT ole_docinfo_from_type(ITypeInfo *pTypeInfo, BSTR *name, BSTR *helpstr, DWORD *helpcontext, BSTR *helpfile)
LPWSTR ole_vstr2wc(VALUE vstr)
VALUE ole_typedesc2val(ITypeInfo *pTypeInfo, TYPEDESC *pTypeDesc, VALUE typedetails)
VALUE reg_get_val2(HKEY hkey, const char *subkey)
LONG reg_open_key(HKEY hkey, const char *name, HKEY *phkey)
typedef HRESULT(STDAPICALLTYPE FNCOCREATEINSTANCEEX)(REFCLSID
VALUE ole_wc2vstr(LPWSTR pw, BOOL isfree)
VALUE default_inspect(VALUE self, const char *class_name)
void ole_initialize(void)
LONG reg_open_vkey(HKEY hkey, VALUE key, HKEY *phkey)
VALUE reg_enum_key(HKEY hkey, DWORD i)
#define OLE_RELEASE_TYPEATTR(X, Y)
#define OLE_GET_TYPEATTR(X, Y)
VALUE eWIN32OLERuntimeError
void ole_raise(HRESULT hr, VALUE ecs, const char *fmt,...)
VALUE ole_methods_from_typeinfo(ITypeInfo *pTypeInfo, int mask)
VALUE ole_type_from_itypeinfo(ITypeInfo *pTypeInfo)
ITypeInfo * itypeinfo(VALUE self)
VALUE create_win32ole_type(ITypeInfo *pTypeInfo, VALUE name)
void Init_win32ole_type(void)
VALUE ole_typelib_from_itypeinfo(ITypeInfo *pTypeInfo)
VALUE typelib_file(VALUE ole)
VALUE create_win32ole_variable(ITypeInfo *pTypeInfo, UINT index, VALUE name)