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
[email protected]
http://mail.python.org/mailman/listinfo/python-win32