python com wrappers

Paul Rudin paul_rudin at scientia.com
Tue Dec 9 05:44:53 EST 2003


>>>>> "Paul" == Paul Rudin <paul_rudin at scientia.com> writes:

    > I'm having a problem with the python wrappers generated from a
    > type library.

    > The symptom is that I get failures to find connections points
    > inside the wrappers when called from DispatchWithEvents or
    > WithEvents - e.g. "com_error: (-2147220992,
    > 'CONNECT_E_NOCONNECTION', None, None)"

    > It seems that the coclass_clsid property of some classes is
    > incorrect. It seems that when a coclass in the type library has
    > multiple "[source] dispinterface" it can happen that this
    > coclass can end up as the one referenced by each of the
    > corresponding DispatchBaseClass subclasses via the coclass_clsid
    > property, whereas probably what should happen is that only ones
    > that are default should be so treated.

    > But maybe I'm misdiagnosing the problem; has anyone else seen
    > this and/or know what the problem is?

To test this I had a quick look at the code that generates the
wrappers. In win32com/client/genpy.py The class Generator has a method
_Build_CoClassChildren. Replacing the line:

 dispItem.coclass_clsid = coclass.clsid 

with the lines:

if flags & pythoncom.IMPLTYPEFLAG_FDEFAULT:
  dispItem.coclass_clsid = coclass.clsid


seems to solve the problem, although perhaps this breaks something
else?





More information about the Python-list mailing list