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