92 hr = pTypeInfo->lpVtbl->GetContainingTypeLib( pTypeInfo, &pTypeLib, &index );
96 hr = pTypeLib->lpVtbl->GetDocumentation( pTypeLib, index,
144 return rb_eval_string(
"WIN32OLE_TYPELIB.typelibs.collect{|t|t.name}");
156 HKEY hclsids, hclsid;
163 err =
reg_open_key(HKEY_CLASSES_ROOT,
"CLSID", &hclsids);
164 if(err != ERROR_SUCCESS) {
172 if (err != ERROR_SUCCESS)
180 RegCloseKey(hclsids);
227 count = pTypeLib->lpVtbl->GetTypeInfoCount(pTypeLib);
228 for (i = 0; i < count && found ==
Qfalse; i++) {
229 hr = pTypeLib->lpVtbl->GetTypeInfo(pTypeLib, i, &pTypeInfo);
232 hr = pTypeLib->lpVtbl->GetDocumentation(pTypeLib, i,
272 hr = LoadTypeLibEx(pbuf, REGKIND_NONE, &pTypeLib);
309 switch(pTypeAttr->typekind) {
319 case TKIND_INTERFACE:
371 len = StringFromGUID2(&pTypeAttr->guid, bstr,
sizeof(bstr)/
sizeof(OLECHAR));
404 hr = ProgIDFromCLSID(&pTypeAttr->guid, &pbuf);
438 if (pTypeAttr->wTypeFlags & (TYPEFLAG_FHIDDEN | TYPEFLAG_FRESTRICTED)) {
586 if(pTypeAttr->typekind != TKIND_ALIAS) {
682 for(i = 0; i < pTypeAttr->cVars; i++) {
683 hr = pTypeInfo->lpVtbl->GetVarDesc(pTypeInfo, i, &pVarDesc);
687 hr = pTypeInfo->lpVtbl->GetNames(pTypeInfo, pVarDesc->memid, &bstr,
689 if(FAILED(hr) || len == 0 || !bstr)
695 pTypeInfo->lpVtbl->ReleaseVarDesc(pTypeInfo, pVarDesc);
745 return ole_methods_from_typeinfo(pTypeInfo, INVOKE_FUNC | INVOKE_PROPERTYGET | INVOKE_PROPERTYPUT | INVOKE_PROPERTYPUTREF);
768 ITypeInfo *pRefTypeInfo;
780 for (i = 0; i < pTypeAttr->cImplTypes; i++) {
781 hr = pTypeInfo->lpVtbl->GetImplTypeFlags(pTypeInfo, i, &flags);
785 hr = pTypeInfo->lpVtbl->GetRefTypeOfImplType(pTypeInfo, i, &href);
788 hr = pTypeInfo->lpVtbl->GetRefTypeInfo(pTypeInfo, href, &pRefTypeInfo);
792 if ((flags & implflags) == implflags) {
VALUE eWIN32OLERuntimeError
static VALUE foletype_helpfile(VALUE self)
#define RUBY_TYPED_FREE_IMMEDIATELY
static VALUE foletype_name(VALUE self)
static VALUE foletype_s_ole_classes(VALUE self, VALUE typelib)
static VALUE foletype_default_event_sources(VALUE self)
void rb_define_singleton_method(VALUE obj, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a singleton method for obj.
static VALUE foletype_methods(VALUE self)
static VALUE foletype_source_ole_types(VALUE self)
static VALUE foletype_ole_type(VALUE self)
static VALUE ole_type_guid(ITypeInfo *pTypeInfo)
#define TypedData_Get_Struct(obj, type, data_type, sval)
static VALUE ole_ole_type(ITypeInfo *pTypeInfo)
static VALUE foletype_s_typelibs(VALUE self)
VALUE rb_ary_push(VALUE ary, VALUE item)
LPWSTR ole_vstr2wc(VALUE vstr)
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
void rb_raise(VALUE exc, const char *fmt,...)
static VALUE foletype_helpcontext(VALUE self)
#define OLE_GET_TYPEATTR(X, Y)
VALUE rb_ivar_get(VALUE, ID)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
static VALUE foletype_minor_version(VALUE self)
void ole_initialize(void)
void Init_win32ole_type(void)
static VALUE foletype_progid(VALUE self)
int rb_str_cmp(VALUE, VALUE)
static VALUE foletype_ole_typelib(VALUE self)
static VALUE foletype_typekind(VALUE self)
static const rb_data_type_t oletype_datatype
static VALUE ole_type_helpstring(ITypeInfo *pTypeInfo)
static VALUE ole_type_progid(ITypeInfo *pTypeInfo)
static VALUE ole_type_visible(ITypeInfo *pTypeInfo)
static VALUE foletype_helpstring(VALUE self)
static VALUE foletype_s_allocate(VALUE klass)
void ole_raise(HRESULT hr, VALUE ecs, const char *fmt,...)
VALUE default_inspect(VALUE self, const char *class_name)
RUBY_EXTERN VALUE rb_cObject
VALUE ole_type_from_itypeinfo(ITypeInfo *pTypeInfo)
VALUE reg_get_val2(HKEY hkey, const char *subkey)
VALUE typelib_file(VALUE ole)
static size_t oletype_size(const void *ptr)
LONG reg_open_key(HKEY hkey, const char *name, HKEY *phkey)
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
VALUE rb_eval_string(const char *)
Evaluates the given string in an isolated binding.
VALUE ole_methods_from_typeinfo(ITypeInfo *pTypeInfo, int mask)
static VALUE foletype_visible(VALUE self)
static VALUE foletype_initialize(VALUE self, VALUE typelib, VALUE oleclass)
static VALUE foletype_inspect(VALUE self)
static VALUE ole_variables(ITypeInfo *pTypeInfo)
LONG reg_open_vkey(HKEY hkey, VALUE key, HKEY *phkey)
void rb_define_alias(VALUE klass, const char *name1, const char *name2)
Defines an alias of a method.
static VALUE ole_type_minor_version(ITypeInfo *pTypeInfo)
static VALUE foletype_default_ole_types(VALUE self)
static VALUE foletype_impl_ole_types(VALUE self)
VALUE create_win32ole_variable(ITypeInfo *pTypeInfo, UINT index, VALUE name)
VALUE rb_ivar_set(VALUE, ID, VALUE)
static VALUE ole_type_major_version(ITypeInfo *pTypeInfo)
static VALUE oletype_set_member(VALUE self, ITypeInfo *pTypeInfo, VALUE name)
static VALUE oleclass_from_typelib(VALUE self, ITypeLib *pTypeLib, VALUE oleclass)
register unsigned int len
static VALUE ole_type_helpcontext(ITypeInfo *pTypeInfo)
static VALUE ole_type_typekind(ITypeInfo *pTypeInfo)
VALUE ole_typedesc2val(ITypeInfo *pTypeInfo, TYPEDESC *pTypeDesc, VALUE typedetails)
VALUE ole_wc2vstr(LPWSTR pw, BOOL isfree)
typedef HRESULT(STDAPICALLTYPE FNCOCREATEINSTANCEEX)(REFCLSID
VALUE reg_enum_key(HKEY hkey, DWORD i)
static VALUE ole_type_impl_ole_types(ITypeInfo *pTypeInfo, int implflags)
#define TypedData_Make_Struct(klass, type, data_type, sval)
VALUE ole_typelib_from_itypeinfo(ITypeInfo *pTypeInfo)
static VALUE foletype_major_version(VALUE self)
#define OLE_RELEASE_TYPEATTR(X, Y)
static VALUE ole_type_helpfile(ITypeInfo *pTypeInfo)
#define SafeStringValue(v)
static VALUE foletype_variables(VALUE self)
#define StringValuePtr(v)
ITypeInfo * itypeinfo(VALUE self)
static VALUE ole_type_src_type(ITypeInfo *pTypeInfo)
HRESULT ole_docinfo_from_type(ITypeInfo *pTypeInfo, BSTR *name, BSTR *helpstr, DWORD *helpcontext, BSTR *helpfile)
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static VALUE foletype_guid(VALUE self)
VALUE create_win32ole_type(ITypeInfo *pTypeInfo, VALUE name)
static void oletype_free(void *ptr)
static VALUE foletype_src_type(VALUE self)
static VALUE foletype_s_progids(VALUE self)