[python-win32] com wrapper problem

Paul Rudin paul_rudin at scientia.com
Tue Dec 9 12:13:57 EST 2003



I posted this stuff to comp.lang.python, sombody suggested this was a
better forum for this:



>>>>> "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-win32 mailing list