I'm afraid I can't really help, but:

On 25/05/2011 8:11 PM, Tobias Oberstein wrote:

How can I call on the interface not via IDispatch, but using vtable-based 
direct call?

You can't I'm afraid.

However, your "casting" code might be suspect:

# Need to "cast" the raw PyIDispatch object to the IRTDUpdateEvent interface
    IRTDUpdateEventKlass = 
win32com.client.CLSIDToClass.GetClass('{A43788C1-D91B-11D3-8F39-00C04F3651B8}')
    self.__callback = IRTDUpdateEventKlass(CallbackObject)

Look into using CastTo, or at least check that when the DispatchBaseClass is called that extra QueryInterface is done - it looks like it might not be.

class IRTDUpdateEvent(DispatchBaseClass):
        CLSID = IID('{A43788C1-D91B-11D3-8F39-00C04F3651B8}')
        coclass_clsid = None

        def UpdateNotify(self):
                return self._oleobj_.InvokeTypes(10, LCID, 1, (24, 0), (),)

and calls UpdateNotify via IDispatch.

Assuming the above is OK, the fact you got this far means that excel is exposing an IDispatch version of this interface - it is just rejecting it. So maybe using IDispatch isn't the underlying problem...

HTH,

Mark
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to