Convert PyIDispatch object to struct IDispatch*

Huayang Xia huayang.xia at gmail.com
Fri Apr 11 10:19:52 EDT 2008


On Apr 11, 9:47 am, Tim Golden <m... at timgolden.me.uk> wrote:
> Huayang Xia wrote:
> > On Apr 11, 12:15 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> > wrote:
> >> En Thu, 10 Apr 2008 18:45:04 -0300, Huayang Xia <huayang.... at gmail.com>
> >> escribió:
>
> >>> I am trying to use ctypes to call dll functions. One of the functions
> >>> requires argument "struct IDispatch* ". I do have a PyIDispatch object
> >>> in python. How can I convert this "PyIDispatch object" to "struct
> >>> IDispatch* "?
> >> I think a PyIDispatch object is an IDispatch* itself.
> >> But you'll get better answers from the python-win32 list:http://mail.python.org/mailman/listinfo/python-win32
>
> >> --
> >> Gabriel Genellina
>
> > Thanks for the info.
>
> > To call a dll function, it needs a C style IDispatch*. PyIDispatch is
> > a python wrapped one. I found a reference from:
>
> >http://svn.python.org/projects/ctypes/trunk/comtypes/comtypes/test/te...
>
> > which shows how to convert C style to python style. Unfortunately i
> > need the reversed version.
>
> > I will post the question to python-win32.
>
> I've had a quick look at the PyIDispatch source and I can't see any obvious
> way in which the underlying IDispatch is exposed. May have missed something,
> but it's possible that there's not way out.
>
> TJG

Thanks for the info.
I read somewhere that the PyIDispatch is converted to VT_DISPATCH
automatically when passed to a C style function call. So from
VT_DISPATCH, it should be possible to get the IDispatch. That's only a
vague idea.



More information about the Python-list mailing list