You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/comtypes/typeinfo.py

914 lines
31 KiB

# XXX Should convert from STDMETHOD to COMMETHOD.
# generated by 'xml2py'
# flags '..\tools\windows.xml -m comtypes -m comtypes.automation -w -r .*TypeLibEx -r .*TypeLib -o typeinfo.py'
# then hacked manually
import os
import sys
import weakref
from ctypes import *
from ctypes.wintypes import ULONG
from comtypes import STDMETHOD
from comtypes import COMMETHOD
from comtypes import _GUID, GUID
# XXX should import more stuff from ctypes.wintypes...
from comtypes.automation import BSTR
from comtypes.automation import DISPID
from comtypes.automation import DISPPARAMS
from comtypes.automation import DWORD
from comtypes.automation import EXCEPINFO
from comtypes.automation import HRESULT
from comtypes.automation import IID
from comtypes.automation import IUnknown
from comtypes.automation import LCID
from comtypes.automation import LONG
from comtypes.automation import SCODE
from comtypes.automation import UINT
from comtypes.automation import VARIANT
from comtypes.automation import VARIANTARG
from comtypes.automation import VARTYPE
from comtypes.automation import WCHAR
from comtypes.automation import WORD
from comtypes.automation import tagVARIANT
is_64_bit = sys.maxsize > 2**32
BOOL = c_int
HREFTYPE = DWORD
INT = c_int
MEMBERID = DISPID
OLECHAR = WCHAR
PVOID = c_void_p
SHORT = c_short
# See https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx#ULONG_PTR # noqa
ULONG_PTR = c_uint64 if is_64_bit else c_ulong
USHORT = c_ushort
LPOLESTR = POINTER(OLECHAR)
################################################################
# enums
tagSYSKIND = c_int # enum
SYS_WIN16 = 0
SYS_WIN32 = 1
SYS_MAC = 2
SYS_WIN64 = 3
SYSKIND = tagSYSKIND
tagREGKIND = c_int # enum
REGKIND_DEFAULT = 0
REGKIND_REGISTER = 1
REGKIND_NONE = 2
REGKIND = tagREGKIND
tagTYPEKIND = c_int # enum
TKIND_ENUM = 0
TKIND_RECORD = 1
TKIND_MODULE = 2
TKIND_INTERFACE = 3
TKIND_DISPATCH = 4
TKIND_COCLASS = 5
TKIND_ALIAS = 6
TKIND_UNION = 7
TKIND_MAX = 8
TYPEKIND = tagTYPEKIND
tagINVOKEKIND = c_int # enum
INVOKE_FUNC = 1
INVOKE_PROPERTYGET = 2
INVOKE_PROPERTYPUT = 4
INVOKE_PROPERTYPUTREF = 8
INVOKEKIND = tagINVOKEKIND
tagDESCKIND = c_int # enum
DESCKIND_NONE = 0
DESCKIND_FUNCDESC = 1
DESCKIND_VARDESC = 2
DESCKIND_TYPECOMP = 3
DESCKIND_IMPLICITAPPOBJ = 4
DESCKIND_MAX = 5
DESCKIND = tagDESCKIND
tagVARKIND = c_int # enum
VAR_PERINSTANCE = 0
VAR_STATIC = 1
VAR_CONST = 2
VAR_DISPATCH = 3
VARKIND = tagVARKIND
tagFUNCKIND = c_int # enum
FUNC_VIRTUAL = 0
FUNC_PUREVIRTUAL = 1
FUNC_NONVIRTUAL = 2
FUNC_STATIC = 3
FUNC_DISPATCH = 4
FUNCKIND = tagFUNCKIND
tagCALLCONV = c_int # enum
CC_FASTCALL = 0
CC_CDECL = 1
CC_MSCPASCAL = 2
CC_PASCAL = 2
CC_MACPASCAL = 3
CC_STDCALL = 4
CC_FPFASTCALL = 5
CC_SYSCALL = 6
CC_MPWCDECL = 7
CC_MPWPASCAL = 8
CC_MAX = 9
CALLCONV = tagCALLCONV
IMPLTYPEFLAG_FDEFAULT = 1
IMPLTYPEFLAG_FSOURCE = 2
IMPLTYPEFLAG_FRESTRICTED = 4
IMPLTYPEFLAG_FDEFAULTVTABLE = 8
tagTYPEFLAGS = c_int # enum
TYPEFLAG_FAPPOBJECT = 1
TYPEFLAG_FCANCREATE = 2
TYPEFLAG_FLICENSED = 4
TYPEFLAG_FPREDECLID = 8
TYPEFLAG_FHIDDEN = 16
TYPEFLAG_FCONTROL = 32
TYPEFLAG_FDUAL = 64
TYPEFLAG_FNONEXTENSIBLE = 128
TYPEFLAG_FOLEAUTOMATION = 256
TYPEFLAG_FRESTRICTED = 512
TYPEFLAG_FAGGREGATABLE = 1024
TYPEFLAG_FREPLACEABLE = 2048
TYPEFLAG_FDISPATCHABLE = 4096
TYPEFLAG_FREVERSEBIND = 8192
TYPEFLAG_FPROXY = 16384
TYPEFLAGS = tagTYPEFLAGS
tagFUNCFLAGS = c_int # enum
FUNCFLAG_FRESTRICTED = 1
FUNCFLAG_FSOURCE = 2
FUNCFLAG_FBINDABLE = 4
FUNCFLAG_FREQUESTEDIT = 8
FUNCFLAG_FDISPLAYBIND = 16
FUNCFLAG_FDEFAULTBIND = 32
FUNCFLAG_FHIDDEN = 64
FUNCFLAG_FUSESGETLASTERROR = 128
FUNCFLAG_FDEFAULTCOLLELEM = 256
FUNCFLAG_FUIDEFAULT = 512
FUNCFLAG_FNONBROWSABLE = 1024
FUNCFLAG_FREPLACEABLE = 2048
FUNCFLAG_FIMMEDIATEBIND = 4096
FUNCFLAGS = tagFUNCFLAGS
tagVARFLAGS = c_int # enum
VARFLAG_FREADONLY = 1
VARFLAG_FSOURCE = 2
VARFLAG_FBINDABLE = 4
VARFLAG_FREQUESTEDIT = 8
VARFLAG_FDISPLAYBIND = 16
VARFLAG_FDEFAULTBIND = 32
VARFLAG_FHIDDEN = 64
VARFLAG_FRESTRICTED = 128
VARFLAG_FDEFAULTCOLLELEM = 256
VARFLAG_FUIDEFAULT = 512
VARFLAG_FNONBROWSABLE = 1024
VARFLAG_FREPLACEABLE = 2048
VARFLAG_FIMMEDIATEBIND = 4096
VARFLAGS = tagVARFLAGS
PARAMFLAG_NONE = 0
PARAMFLAG_FIN = 1
PARAMFLAG_FOUT = 2
PARAMFLAG_FLCID = 4
PARAMFLAG_FRETVAL = 8
PARAMFLAG_FOPT = 16
PARAMFLAG_FHASDEFAULT = 32
PARAMFLAG_FHASCUSTDATA = 64
################################################################
# a helper
def _deref_with_release(ptr, release):
# Given a POINTER instance, return the pointed to value.
# Call the 'release' function with 'ptr' to release resources
# when the value is no longer needed.
result = ptr[0]
result.__ref__ = weakref.ref(result, lambda dead: release(ptr))
return result
# interfaces
class ITypeLib(IUnknown):
_iid_ = GUID("{00020402-0000-0000-C000-000000000046}")
# Commented out methods use the default implementation that comtypes
# automatically creates for COM methods.
## def GetTypeInfoCount(self):
## "Return the number of type informations"
## def GetTypeInfo(self, index):
## "Load type info by index"
## def GetTypeInfoType(self, index):
## "Return the TYPEKIND of type information"
## def GetTypeInfoOfGuid(self, guid):
## "Return type information for a guid"
def GetLibAttr(self):
"Return type library attributes"
return _deref_with_release(self._GetLibAttr(), self.ReleaseTLibAttr)
## def GetTypeComp(self):
## "Return an ITypeComp pointer."
## def GetDocumentation(self, index):
## "Return documentation for a type description."
def IsName(self, name, lHashVal=0):
"""Check if there is type information for this name.
Returns the name with capitalization found in the type
library, or None.
"""
from ctypes import create_unicode_buffer
namebuf = create_unicode_buffer(name)
found = BOOL()
self.__com_IsName(namebuf, lHashVal, byref(found))
if found.value:
return namebuf[:].split("\0", 1)[0]
return None
def FindName(self, name, lHashVal=0):
# Hm...
# Could search for more than one name - should we support this?
found = c_ushort(1)
tinfo = POINTER(ITypeInfo)()
memid = MEMBERID()
self.__com_FindName(name, lHashVal, byref(tinfo), byref(memid), byref(found))
if found.value:
return memid.value, tinfo
return None
## def ReleaseTLibAttr(self, ptla):
## "Release TLIBATTR"
################
def fix_name(name):
# Some typelibs contain BSTR with embedded NUL characters,
# probably the len of the BSTR is wrong.
if name is None:
return name
return name.split("\0")[0]
class ITypeInfo(IUnknown):
_iid_ = GUID("{00020401-0000-0000-C000-000000000046}")
def GetTypeAttr(self):
"Return the TYPEATTR for this type"
return _deref_with_release(self._GetTypeAttr(), self.ReleaseTypeAttr)
## def GetTypeComp(self):
## "Return ITypeComp pointer for this type"
def GetDocumentation(self, memid):
"""Return name, docstring, helpcontext, and helpfile for 'memid'."""
name, doc, helpcontext, helpfile = self._GetDocumentation(memid)
return fix_name(name), fix_name(doc), helpcontext, fix_name(helpfile)
def GetFuncDesc(self, index):
"Return FUNCDESC for index"
return _deref_with_release(self._GetFuncDesc(index), self.ReleaseFuncDesc)
def GetVarDesc(self, index):
"Return VARDESC for index"
return _deref_with_release(self._GetVarDesc(index), self.ReleaseVarDesc)
def GetNames(self, memid, count=1):
"Return names for memid"
names = (BSTR * count)()
cnames = c_uint()
self.__com_GetNames(memid, names, count, byref(cnames))
return names[:cnames.value]
## def GetRefTypeOfImplType(self, index):
## "Get the reftype of an implemented type"
## def GetImplTypeFlags(self, index):
## "Get IMPLTYPEFLAGS"
def GetIDsOfNames(self, *names):
"Maps function and argument names to identifiers"
rgsznames = (c_wchar_p * len(names))(*names)
ids = (MEMBERID * len(names))()
self.__com_GetIDsOfNames(rgsznames, len(names), ids)
return ids[:]
# not yet wrapped
## STDMETHOD(HRESULT, 'Invoke', [PVOID, MEMBERID, WORD, POINTER(DISPPARAMS), POINTER(VARIANT), POINTER(EXCEPINFO), POINTER(UINT)]),
## def GetDllEntry(self, memid, invkind):
## "Return the dll name, function name, and ordinal for a function and invkind."
## def GetRefTypeInfo(self, href):
## "Get type info for reftype"
def AddressOfMember(self, memid, invkind):
"Get the address of a function in a dll"
raise "Check Me"
p = c_void_p()
self.__com_AddressOfMember(memid, invkind, byref(p))
# XXX Would the default impl return the value of p?
return p.value
def CreateInstance(self, punkouter=None, interface=IUnknown, iid=None):
if iid is None:
iid = interface._iid_
return self._CreateInstance(punkouter, byref(interface._iid_))
## def GetMops(self, index):
## "Get marshalling opcodes (whatever that is...)"
## def GetContainingTypeLib(self):
## "Return index into and the containing type lib itself"
## def ReleaseTypeAttr(self, pta):
## def ReleaseFuncDesc(self, pfd):
## def ReleaseVarDesc(self, pvd):
################
class ITypeComp(IUnknown):
_iid_ = GUID("{00020403-0000-0000-C000-000000000046}")
def Bind(self, name, flags=0, lHashVal=0):
"Bind to a name"
bindptr = BINDPTR()
desckind = DESCKIND()
ti = POINTER(ITypeInfo)()
self.__com_Bind(name, lHashVal, flags, byref(ti), byref(desckind), byref(bindptr))
kind = desckind.value
if kind == DESCKIND_FUNCDESC:
fd = bindptr.lpfuncdesc[0]
fd.__ref__ = weakref.ref(fd, lambda dead: ti.ReleaseFuncDesc(bindptr.lpfuncdesc))
return "function", fd
elif kind == DESCKIND_VARDESC:
vd = bindptr.lpvardesc[0]
vd.__ref__ = weakref.ref(vd, lambda dead: ti.ReleaseVarDesc(bindptr.lpvardesc))
return "variable", vd
elif kind == DESCKIND_TYPECOMP:
return "type", bindptr.lptcomp
elif kind == DESCKIND_IMPLICITAPPOBJ:
raise NotImplementedError
elif kind == DESCKIND_NONE:
raise NameError("Name %s not found" % name)
def BindType(self, name, lHashVal=0):
"Bind a type, and return both the typeinfo and typecomp for it."
ti = POINTER(ITypeInfo)()
tc = POINTER(ITypeComp)()
self.__com_BindType(name, lHashVal, byref(ti), byref(tc))
return ti, tc
################
class ICreateTypeLib(IUnknown):
_iid_ = GUID("{00020406-0000-0000-C000-000000000046}")
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 2149
class ICreateTypeLib2(ICreateTypeLib):
_iid_ = GUID("{0002040F-0000-0000-C000-000000000046}")
class ICreateTypeInfo(IUnknown):
_iid_ = GUID("{00020405-0000-0000-C000-000000000046}")
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 915
def SetFuncAndParamNames(self, index, *names):
rgszNames = (c_wchar_p * len(names))()
for i, n in enumerate(names):
rgszNames[i] = n
return self._SetFuncAndParamNames(index, rgszNames, len(names))
class IRecordInfo(IUnknown):
# C:/vc98/include/OAIDL.H 5974
_iid_ = GUID("{0000002F-0000-0000-C000-000000000046}")
def GetFieldNames(self, *args):
count = c_ulong()
self.__com_GetFieldNames(count, None)
array = (BSTR * count.value)()
self.__com_GetFieldNames(count, array)
result = array[:]
# XXX Should SysFreeString the array contents. How to?
return result
IRecordInfo. _methods_ = [
COMMETHOD([], HRESULT, 'RecordInit',
(['in'], c_void_p, 'pvNew')),
COMMETHOD([], HRESULT, 'RecordClear',
(['in'], c_void_p, 'pvExisting')),
COMMETHOD([], HRESULT, 'RecordCopy',
(['in'], c_void_p, 'pvExisting'),
(['in'], c_void_p, 'pvNew')),
COMMETHOD([], HRESULT, 'GetGuid',
(['out'], POINTER(GUID), 'pguid')),
COMMETHOD([], HRESULT, 'GetName',
(['out'], POINTER(BSTR), 'pbstrName')),
COMMETHOD([], HRESULT, 'GetSize',
(['out'], POINTER(c_ulong), 'pcbSize')),
COMMETHOD([], HRESULT, 'GetTypeInfo',
(['out'], POINTER(POINTER(ITypeInfo)), 'ppTypeInfo')),
COMMETHOD([], HRESULT, 'GetField',
(['in'], c_void_p, 'pvData'),
(['in'], c_wchar_p, 'szFieldName'),
(['out'], POINTER(VARIANT), 'pvarField')),
COMMETHOD([], HRESULT, 'GetFieldNoCopy',
(['in'], c_void_p, 'pvData'),
(['in'], c_wchar_p, 'szFieldName'),
(['out'], POINTER(VARIANT), 'pvarField'),
(['out'], POINTER(c_void_p), 'ppvDataCArray')),
COMMETHOD([], HRESULT, 'PutField',
(['in'], c_ulong, 'wFlags'),
(['in'], c_void_p, 'pvData'),
(['in'], c_wchar_p, 'szFieldName'),
(['in'], POINTER(VARIANT), 'pvarField')),
COMMETHOD([], HRESULT, 'PutFieldNoCopy',
(['in'], c_ulong, 'wFlags'),
(['in'], c_void_p, 'pvData'),
(['in'], c_wchar_p, 'szFieldName'),
(['in'], POINTER(VARIANT), 'pvarField')),
COMMETHOD([], HRESULT, 'GetFieldNames',
(['in', 'out'], POINTER(c_ulong), 'pcNames'),
(['in'], POINTER(BSTR), 'rgBstrNames')),
COMMETHOD([], BOOL, 'IsMatchingType',
(['in'], POINTER(IRecordInfo))),
COMMETHOD([], HRESULT, 'RecordCreate'),
COMMETHOD([], HRESULT, 'RecordCreateCopy',
(['in'], c_void_p, 'pvSource'),
(['out'], POINTER(c_void_p), 'ppvDest')),
COMMETHOD([], HRESULT, 'RecordDestroy',
(['in'], c_void_p, 'pvRecord'))]
################################################################
# functions
_oleaut32 = oledll.oleaut32
def GetRecordInfoFromTypeInfo(tinfo):
"Return an IRecordInfo pointer to the UDT described in tinfo"
ri = POINTER(IRecordInfo)()
_oleaut32.GetRecordInfoFromTypeInfo(tinfo, byref(ri))
return ri
def GetRecordInfoFromGuids(rGuidTypeLib, verMajor, verMinor, lcid, rGuidTypeInfo):
ri = POINTER(IRecordInfo)()
_oleaut32.GetRecordInfoFromGuids(byref(GUID(rGuidTypeLib)),
verMajor, verMinor, lcid,
byref(GUID(rGuidTypeInfo)),
byref(ri))
return ri
def LoadRegTypeLib(guid, wMajorVerNum, wMinorVerNum, lcid=0):
"Load a registered type library"
tlib = POINTER(ITypeLib)()
_oleaut32.LoadRegTypeLib(byref(GUID(guid)), wMajorVerNum, wMinorVerNum, lcid, byref(tlib))
return tlib
if hasattr(_oleaut32, "LoadTypeLibEx"):
def LoadTypeLibEx(szFile, regkind=REGKIND_NONE):
"Load, and optionally register a type library file"
ptl = POINTER(ITypeLib)()
_oleaut32.LoadTypeLibEx(c_wchar_p(szFile), regkind, byref(ptl))
return ptl
else:
def LoadTypeLibEx(szFile, regkind=REGKIND_NONE):
"Load, and optionally register a type library file"
ptl = POINTER(ITypeLib)()
_oleaut32.LoadTypeLib(c_wchar_p(szFile), byref(ptl))
return ptl
def LoadTypeLib(szFile):
"Load and register a type library file"
tlib = POINTER(ITypeLib)()
_oleaut32.LoadTypeLib(c_wchar_p(szFile), byref(tlib))
return tlib
def UnRegisterTypeLib(libID, wVerMajor, wVerMinor, lcid=0, syskind=SYS_WIN32):
"Unregister a registered type library"
return _oleaut32.UnRegisterTypeLib(byref(GUID(libID)), wVerMajor, wVerMinor, lcid, syskind)
def RegisterTypeLib(tlib, fullpath, helpdir=None):
"Register a type library in the registry"
return _oleaut32.RegisterTypeLib(tlib, c_wchar_p(fullpath), c_wchar_p(helpdir))
def CreateTypeLib(filename, syskind=SYS_WIN32):
"Return a ICreateTypeLib2 pointer"
ctlib = POINTER(ICreateTypeLib2)()
_oleaut32.CreateTypeLib2(syskind, c_wchar_p(filename), byref(ctlib))
return ctlib
if os.name == "ce":
# See also:
# http://blogs.msdn.com/larryosterman/archive/2006/01/09/510856.aspx
#
# windows CE does not have QueryPathOfRegTypeLib. Emulate by reading the registry:
def QueryPathOfRegTypeLib(libid, wVerMajor, wVerMinor, lcid=0):
"Return the path of a registered type library"
import winreg
try:
hkey = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, r"Typelib\%s\%s.%s\%x\win32" % (libid, wVerMajor, wVerMinor, lcid))
except WindowsError:
# On CE, some typelib names are not in the ..\win32 subkey:
hkey = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, r"Typelib\%s\%s.%s\%x" % (libid, wVerMajor, wVerMinor, lcid))
return winreg.QueryValueEx(hkey, "")[0]
else:
def QueryPathOfRegTypeLib(libid, wVerMajor, wVerMinor, lcid=0):
"Return the path of a registered type library"
pathname = BSTR()
_oleaut32.QueryPathOfRegTypeLib(byref(GUID(libid)), wVerMajor, wVerMinor, lcid, byref(pathname))
return pathname.value.split("\0")[0]
################################################################
# Structures
class tagTLIBATTR(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 4437
def __repr__(self):
return "TLIBATTR(GUID=%s, Version=%s.%s, LCID=%s, FLags=0x%x)" % \
(self.guid, self.wMajorVerNum, self.wMinorVerNum, self.lcid, self.wLibFlags)
TLIBATTR = tagTLIBATTR
class tagTYPEATTR(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 672
def __repr__(self):
return "TYPEATTR(GUID=%s, typekind=%s, funcs=%s, vars=%s, impltypes=%s)" % \
(self.guid, self.typekind, self.cFuncs, self.cVars, self.cImplTypes)
TYPEATTR = tagTYPEATTR
class tagFUNCDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 769
def __repr__(self):
return "FUNCDESC(memid=%s, cParams=%s, cParamsOpt=%s, callconv=%s, invkind=%s, funckind=%s)" % \
(self.memid, self.cParams, self.cParamsOpt, self.callconv, self.invkind, self.funckind)
FUNCDESC = tagFUNCDESC
class tagVARDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 803
pass
VARDESC = tagVARDESC
class tagBINDPTR(Union):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 3075
pass
BINDPTR = tagBINDPTR
class tagTYPEDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 582
pass
TYPEDESC = tagTYPEDESC
class tagIDLDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 633
pass
IDLDESC = tagIDLDESC
class tagARRAYDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 594
pass
################################################################
# interface vtbl definitions
ICreateTypeLib._methods_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 2149
COMMETHOD([], HRESULT, 'CreateTypeInfo',
(['in'], LPOLESTR, 'szName'),
(['in'], TYPEKIND, 'tkind'),
(['out'], POINTER(POINTER(ICreateTypeInfo)), 'ppCTInfo')),
STDMETHOD(HRESULT, 'SetName', [LPOLESTR]),
STDMETHOD(HRESULT, 'SetVersion', [WORD, WORD]),
STDMETHOD(HRESULT, 'SetGuid', [POINTER(GUID)]),
STDMETHOD(HRESULT, 'SetDocString', [LPOLESTR]),
STDMETHOD(HRESULT, 'SetHelpFileName', [LPOLESTR]),
STDMETHOD(HRESULT, 'SetHelpContext', [DWORD]),
STDMETHOD(HRESULT, 'SetLcid', [LCID]),
STDMETHOD(HRESULT, 'SetLibFlags', [UINT]),
STDMETHOD(HRESULT, 'SaveAllChanges', []),
]
ICreateTypeLib2._methods_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 2444
STDMETHOD(HRESULT, 'DeleteTypeInfo', [POINTER(ITypeInfo)]),
STDMETHOD(HRESULT, 'SetCustData', [POINTER(GUID), POINTER(VARIANT)]),
STDMETHOD(HRESULT, 'SetHelpStringContext', [ULONG]),
STDMETHOD(HRESULT, 'SetHelpStringDll', [LPOLESTR]),
]
ITypeLib._methods_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 4455
COMMETHOD([], UINT, 'GetTypeInfoCount'),
COMMETHOD([], HRESULT, 'GetTypeInfo',
(['in'], UINT, 'index'),
(['out'], POINTER(POINTER(ITypeInfo)))),
COMMETHOD([], HRESULT, 'GetTypeInfoType',
(['in'], UINT, 'index'),
(['out'], POINTER(TYPEKIND))),
COMMETHOD([], HRESULT, 'GetTypeInfoOfGuid',
(['in'], POINTER(GUID)),
(['out'], POINTER(POINTER(ITypeInfo)))),
COMMETHOD([], HRESULT, 'GetLibAttr',
(['out'], POINTER(POINTER(TLIBATTR)))),
COMMETHOD([], HRESULT, 'GetTypeComp',
(['out'], POINTER(POINTER(ITypeComp)))),
COMMETHOD([], HRESULT, 'GetDocumentation',
(['in'], INT, 'index'),
(['out'], POINTER(BSTR)),
(['out'], POINTER(BSTR)),
(['out'], POINTER(DWORD)),
(['out'], POINTER(BSTR))),
COMMETHOD([], HRESULT, 'IsName',
# IsName changes the casing of the passed in name to
# match that in the type library. In the automatically
# wrapped version of this method, ctypes would pass a
# Python unicode string which would then be changed -
# very bad. So we have (see above) to implement the
# IsName method manually.
(['in', 'out'], LPOLESTR, 'name'),
(['in', 'optional'], DWORD, 'lHashVal', 0),
(['out'], POINTER(BOOL))),
STDMETHOD(HRESULT, 'FindName', [LPOLESTR, DWORD, POINTER(POINTER(ITypeInfo)),
POINTER(MEMBERID), POINTER(USHORT)]),
COMMETHOD([], None, 'ReleaseTLibAttr',
(['in'], POINTER(TLIBATTR)))
]
ITypeInfo._methods_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 3230
COMMETHOD([], HRESULT, 'GetTypeAttr',
(['out'], POINTER(POINTER(TYPEATTR)), 'ppTypeAttr')),
COMMETHOD([], HRESULT, 'GetTypeComp',
(['out'], POINTER(POINTER(ITypeComp)))),
COMMETHOD([], HRESULT, 'GetFuncDesc',
(['in'], UINT, 'index'),
(['out'], POINTER(POINTER(FUNCDESC)))),
COMMETHOD([], HRESULT, 'GetVarDesc',
(['in'], UINT, 'index'),
(['out'], POINTER(POINTER(VARDESC)))),
STDMETHOD(HRESULT, 'GetNames', [MEMBERID, POINTER(BSTR), UINT, POINTER(UINT)]),
COMMETHOD([], HRESULT, 'GetRefTypeOfImplType',
(['in'], UINT, 'index'),
(['out'], POINTER(HREFTYPE))),
COMMETHOD([], HRESULT, 'GetImplTypeFlags',
(['in'], UINT, 'index'),
(['out'], POINTER(INT))),
## STDMETHOD(HRESULT, 'GetIDsOfNames', [POINTER(LPOLESTR), UINT, POINTER(MEMBERID)]),
# this one changed, to accept c_wchar_p array
STDMETHOD(HRESULT, 'GetIDsOfNames', [POINTER(c_wchar_p), UINT, POINTER(MEMBERID)]),
STDMETHOD(HRESULT, 'Invoke', [PVOID, MEMBERID, WORD, POINTER(DISPPARAMS), POINTER(VARIANT), POINTER(EXCEPINFO), POINTER(UINT)]),
COMMETHOD([], HRESULT, 'GetDocumentation',
(['in'], MEMBERID, 'memid'),
(['out'], POINTER(BSTR), 'pBstrName'),
(['out'], POINTER(BSTR), 'pBstrDocString'),
(['out'], POINTER(DWORD), 'pdwHelpContext'),
(['out'], POINTER(BSTR), 'pBstrHelpFile')),
COMMETHOD([], HRESULT, 'GetDllEntry',
(['in'], MEMBERID, 'index'),
(['in'], INVOKEKIND, 'invkind'),
(['out'], POINTER(BSTR), 'pBstrDllName'),
(['out'], POINTER(BSTR), 'pBstrName'),
(['out'], POINTER(WORD), 'pwOrdinal')),
COMMETHOD([], HRESULT, 'GetRefTypeInfo',
(['in'], HREFTYPE, 'hRefType'),
(['out'], POINTER(POINTER(ITypeInfo)))),
STDMETHOD(HRESULT, 'AddressOfMember', [MEMBERID, INVOKEKIND, POINTER(PVOID)]),
COMMETHOD([], HRESULT, 'CreateInstance',
(['in'], POINTER(IUnknown), 'pUnkOuter'),
(['in'], POINTER(IID), 'refiid'),
(['out'], POINTER(POINTER(IUnknown)))),
COMMETHOD([], HRESULT, 'GetMops',
(['in'], MEMBERID, 'memid'),
(['out'], POINTER(BSTR))),
COMMETHOD([], HRESULT, 'GetContainingTypeLib',
(['out'], POINTER(POINTER(ITypeLib))),
(['out'], POINTER(UINT))),
COMMETHOD([], None, 'ReleaseTypeAttr',
(['in'], POINTER(TYPEATTR))),
COMMETHOD([], None, 'ReleaseFuncDesc',
(['in'], POINTER(FUNCDESC))),
COMMETHOD([], None, 'ReleaseVarDesc',
(['in'], POINTER(VARDESC))),
]
ITypeComp._methods_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 3090
STDMETHOD(HRESULT, 'Bind',
[LPOLESTR, DWORD, WORD, POINTER(POINTER(ITypeInfo)),
POINTER(DESCKIND), POINTER(BINDPTR)]),
STDMETHOD(HRESULT, 'BindType',
[LPOLESTR, DWORD, POINTER(POINTER(ITypeInfo)), POINTER(POINTER(ITypeComp))]),
]
ICreateTypeInfo._methods_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 915
STDMETHOD(HRESULT, 'SetGuid', [POINTER(GUID)]),
STDMETHOD(HRESULT, 'SetTypeFlags', [UINT]),
STDMETHOD(HRESULT, 'SetDocString', [LPOLESTR]),
STDMETHOD(HRESULT, 'SetHelpContext', [DWORD]),
STDMETHOD(HRESULT, 'SetVersion', [WORD, WORD]),
# STDMETHOD(HRESULT, 'AddRefTypeInfo', [POINTER(ITypeInfo), POINTER(HREFTYPE)]),
COMMETHOD([], HRESULT, 'AddRefTypeInfo',
(['in'], POINTER(ITypeInfo)),
(['out'], POINTER(HREFTYPE))),
STDMETHOD(HRESULT, 'AddFuncDesc', [UINT, POINTER(FUNCDESC)]),
STDMETHOD(HRESULT, 'AddImplType', [UINT, HREFTYPE]),
STDMETHOD(HRESULT, 'SetImplTypeFlags', [UINT, INT]),
STDMETHOD(HRESULT, 'SetAlignment', [WORD]),
STDMETHOD(HRESULT, 'SetSchema', [LPOLESTR]),
STDMETHOD(HRESULT, 'AddVarDesc', [UINT, POINTER(VARDESC)]),
STDMETHOD(HRESULT, 'SetFuncAndParamNames', [UINT, POINTER(c_wchar_p), UINT]),
STDMETHOD(HRESULT, 'SetVarName', [UINT, LPOLESTR]),
STDMETHOD(HRESULT, 'SetTypeDescAlias', [POINTER(TYPEDESC)]),
STDMETHOD(HRESULT, 'DefineFuncAsDllEntry', [UINT, LPOLESTR, LPOLESTR]),
STDMETHOD(HRESULT, 'SetFuncDocString', [UINT, LPOLESTR]),
STDMETHOD(HRESULT, 'SetVarDocString', [UINT, LPOLESTR]),
STDMETHOD(HRESULT, 'SetFuncHelpContext', [UINT, DWORD]),
STDMETHOD(HRESULT, 'SetVarHelpContext', [UINT, DWORD]),
STDMETHOD(HRESULT, 'SetMops', [UINT, BSTR]),
STDMETHOD(HRESULT, 'SetTypeIdldesc', [POINTER(IDLDESC)]),
STDMETHOD(HRESULT, 'LayOut', []),
]
class IProvideClassInfo(IUnknown):
_iid_ = GUID("{B196B283-BAB4-101A-B69C-00AA00341D07}")
_methods_ = [
# Returns the ITypeInfo interface for the object's coclass type information.
COMMETHOD([], HRESULT, "GetClassInfo",
( ['out'], POINTER(POINTER(ITypeInfo)), "ppTI" ) )
]
class IProvideClassInfo2(IProvideClassInfo):
_iid_ = GUID("{A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851}")
_methods_ = [
# Returns the GUID for the object's outgoing IID for its default event set.
COMMETHOD([], HRESULT, "GetGUID",
( ['in'], DWORD, "dwGuidKind" ),
( ['out', 'retval'], POINTER(GUID), "pGUID" ))
]
################################################################
# Structure fields
tagTLIBATTR._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 4437
('guid', GUID),
('lcid', LCID),
('syskind', SYSKIND),
('wMajorVerNum', WORD),
('wMinorVerNum', WORD),
('wLibFlags', WORD),
]
class N11tagTYPEDESC5DOLLAR_203E(Union):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 584
pass
N11tagTYPEDESC5DOLLAR_203E._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 584
('lptdesc', POINTER(tagTYPEDESC)),
('lpadesc', POINTER(tagARRAYDESC)),
('hreftype', HREFTYPE),
]
tagTYPEDESC._anonymous_ = ('_',)
tagTYPEDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 582
# Unnamed field renamed to '_'
('_', N11tagTYPEDESC5DOLLAR_203E),
('vt', VARTYPE),
]
tagIDLDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 633
('dwReserved', ULONG_PTR),
('wIDLFlags', USHORT),
]
tagTYPEATTR._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 672
('guid', GUID),
('lcid', LCID),
('dwReserved', DWORD),
('memidConstructor', MEMBERID),
('memidDestructor', MEMBERID),
('lpstrSchema', LPOLESTR),
('cbSizeInstance', DWORD),
('typekind', TYPEKIND),
('cFuncs', WORD),
('cVars', WORD),
('cImplTypes', WORD),
('cbSizeVft', WORD),
('cbAlignment', WORD),
('wTypeFlags', WORD),
('wMajorVerNum', WORD),
('wMinorVerNum', WORD),
('tdescAlias', TYPEDESC),
('idldescType', IDLDESC),
]
class N10tagVARDESC5DOLLAR_205E(Union):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 807
pass
N10tagVARDESC5DOLLAR_205E._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 807
('oInst', DWORD),
('lpvarValue', POINTER(VARIANT)),
]
class tagELEMDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 661
pass
class N11tagELEMDESC5DOLLAR_204E(Union):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 663
pass
class tagPARAMDESC(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 609
pass
class tagPARAMDESCEX(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 601
pass
LPPARAMDESCEX = POINTER(tagPARAMDESCEX)
tagPARAMDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 609
('pparamdescex', LPPARAMDESCEX),
('wParamFlags', USHORT),
]
PARAMDESC = tagPARAMDESC
N11tagELEMDESC5DOLLAR_204E._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 663
('idldesc', IDLDESC),
('paramdesc', PARAMDESC),
]
tagELEMDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 661
('tdesc', TYPEDESC),
# Unnamed field renamed to '_'
('_', N11tagELEMDESC5DOLLAR_204E),
]
ELEMDESC = tagELEMDESC
tagVARDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 803
('memid', MEMBERID),
('lpstrSchema', LPOLESTR),
# Unnamed field renamed to '_'
('_', N10tagVARDESC5DOLLAR_205E),
('elemdescVar', ELEMDESC),
('wVarFlags', WORD),
('varkind', VARKIND),
]
tagBINDPTR._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 3075
('lpfuncdesc', POINTER(FUNCDESC)),
('lpvardesc', POINTER(VARDESC)),
('lptcomp', POINTER(ITypeComp)),
]
tagFUNCDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 769
('memid', MEMBERID),
('lprgscode', POINTER(SCODE)),
('lprgelemdescParam', POINTER(ELEMDESC)),
('funckind', FUNCKIND),
('invkind', INVOKEKIND),
('callconv', CALLCONV),
('cParams', SHORT),
('cParamsOpt', SHORT),
('oVft', SHORT),
('cScodes', SHORT),
('elemdescFunc', ELEMDESC),
('wFuncFlags', WORD),
]
tagPARAMDESCEX._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 601
('cBytes', DWORD),
('varDefaultValue', VARIANTARG),
]
class tagSAFEARRAYBOUND(Structure):
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 226
_fields_ = [
('cElements', DWORD),
('lLbound', LONG),
]
SAFEARRAYBOUND = tagSAFEARRAYBOUND
tagARRAYDESC._fields_ = [
# C:/Programme/gccxml/bin/Vc71/PlatformSDK/oaidl.h 594
('tdescElem', TYPEDESC),
('cDims', USHORT),
('rgbounds', SAFEARRAYBOUND * 1),
]