> OLE Viewer finds a second interface IS7ProSimEvents that is > made the default source makepy does not recognise > IS7ProSimEvents as an interface at all.
That seems strange - for events, even non-dual interfaces should be supported. > gencache.GetClassForCLSID(clsid) returns the class with > docstring """IS7ProSim Interface for S7ProSim COM Object""" > This is correct. > This class has no sources, as can be seen in the OLE Viewer > output, and the AttributError is thrown. OK. > klass.coclass_clsid is '{83CC0D83-FEDA-11D1-BE76-0060B06816CF}'. OK. > gencache.GetClassForCLSID(klass.coclass_clsid) returns a > class with the following properties: > base class : CoClassBaseClass > coclass_interface : [<class > win32com.gen_py.83CC0D80-FEDA-11D1-BE76-0060B06816CFx0x1x0.IS7 > ProSim at > 0x00E4DCF0>] > coclass_sources : [] > clsid : {83CC0D83-FEDA-11D1-BE76-0060B06816CF} > There is no attribute default_source, so the AttributeError > is thrown again. > > This is correct with respect to the makepy output, but not > with repsect to the actual OLE object. > IMHO the makepy output should have included IS7PrSomEvents as > an interface and declared it as default_source within CoClass > S7SimPro. Right? Yep - so presumably this is the same problem as above. > So how come it does not? No idea. > Tracking the makepy actions: > ---------------------------- > A convenient break point location is makepy.py line 263: > gen.generate(....) Walking on till genpy.py line 737 > self.CollectOleItemInfosFromType() > returned a (correct) list > of all OleItem information headers: > infotype doc[0] > doc[1] > TKIND_INTERFACE, 'IS7ProSimEvents', 'Event interface for > S7ProSim COM Object' > TKIND_COCLASS, 'S7ProSim', 'S7ProSim Class' > TKIND_DISPATCH, 'IS7ProSim', 'IS7ProSim > Interface > for S7ProSim COM Object' > a number of (infotype 0 and 6) entries for the constant > enumerations This list is run through to colelct and build > all oleItems, enumItems, recordItems and vtableItems > pass 0: TKIND_INTERFACE, 'IS7ProSimEvents', 'Event interface > for S7ProSim COM Object' > oleItem, vtableItem = > self._Build_Interface(type_info_tuple) > returns (None, <VTableItem>) > returns (None, <VTableItem>). This will lead to > the exclusion of this interface later on. > > So how does this happen? It would appear that makepy is excluding non-dual interfaces, and that the integration with the 'universal' support for vtable interfaces isn't complete. > Did I stumble on a bug here or am I completely missing a > point? Please help out. I think you struck a bug - we should be able to support incoming interfaces (ie, events) using only vtables. Mark _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32