1

In short: I'm trying to call a method on in IUknown-based interface. I have some parts, but they don't connect.

Situation:

o1 = win32com.client.Dispatch("SomeProgId")
o2 = o1.SubObject

The subobject is not co-creatable, o2._ole_obj_ is a <PyIDispatch at ...>`, as expected.

o2 also supports another interface, IMyInterface, derived form IUnknown, and I want to call a method on that interface.

The following:

iid = pywintypes.IID("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}") // IMyInterface iid
o2._oleobj_.QueryInterface(iid)

fails with

TypeError: There is no interface object registered that supports this IID

The Queryinterface call itself succeeds (I've verified that in the source for the COM object), and if I specify an unsupported IID, the error message is different. The call fails even without trying to assing the result.


Okay, so I set out to find out about early binding support in python. Documentation seems spotty and outdated (or am I missing something?)

The following succeeds:

tlb = comtypes.client.GetModule(r"path-to-dll")
x = tlb.IMyInterface()

Of course x is not usable, but intellisense shows the correct methods etc. for x. Generally, Intellisense shows all elements from the type library, so that part seems to work.

I've also tried:

myitf = win32com.client.CastTo(o2._oleobj_, 'IMyInterface')

which fails with

No module named 'win32com.gen_py.x0x2x4.IMyInterface' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "…\Python312-32\Lib\site-packages\win32com\client_init_.py", line 213, in CastTo mod = gencache.GetModuleForCLSID(target_clsid) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ … No module named 'win32com.gen_py.x0x2x4.IMyInterface'

2.4 is the typelib version, so everything looks good.

Any help?

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.