On 12/17/2012 8:25 PM, Mark Hammond wrote:
Dave sent me the source via email.
The root problem is that the MFC project is not supporting the
GetTypeInfo() and associated calls, and TBH I'm not sure how hard it
would be to make it support that. The end result is that the makepy
support for the object isn't being used as pywin32 can't associate the
object with the typelib, and thus isn't specifying that additional
second param. This is also the reason you can't automagically
generate the typelib using, eg,
win32com.client.gencache.EnsureDispatch() - you are forced to run
makepy manually and specify the exact typelib.
There is actually a deficiency in pywin32 here too - it *does* know
that MyApp.Application has a generated class, but it never tries that
route - instead it creates the object and tries to use the typeinfo
stuff to make the association. I think a bug on sourceforge for this
would be good.
So after running makepy, a work-around is:
>>> klass=win32com.client.gencache.GetClassForProgID("MyApp.Application")
>>> x = klass()
>>> x.GetSettingValue("foo")
u'foo=testValue123'
>>>
If you can work out how to get the MFC app to respond to the
GetTypeInfo() and associated calls, it would all "just work". ie:
>>> x=win32com.client.Dispatch("MyApp.Application")._oleobj_
>>> x
<PyIDispatch at 0x00000000023590B0 with obj at 0x00000000003C0298>
>>> x.GetTypeInfo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pywintypes.com_error: (-2147352565, 'Invalid index.', None, None)
>>>
should work - eg, a similar example using a WMI object:
>>> x = win32com.client.Dispatch("WbemScripting.SWbemLocator")._oleobj_
>>> x
<PyIDispatch at 0x0000000002359110 with obj at 0x0000000002C513D0>
>>> x.GetTypeInfo()
<PyITypeInfo at 0x00000000023590B0 with obj at 0x00000000003EB8B8>
>>>
So it kinda sucks :(
Mark
Thanks for all the help Mark! I'll look into what it would take to
support the GetTypeInfo() call on the MFC side. It sounds like the
work-around will do just fine even if I can't get the GetTypeInfo()
thing going.
Dave
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32