Any help here would be appreciated. But I hope I don't kill my odds by having redacting the names of all the (proprietary) libraries involved. (Or by the fact that I'm new to COM.)

Anyhow, as part of a collaboration, I'm building a win32 application that uses COM to interact with several proprietary libs, and I do not have access to the sources. I have VBA code (that works) that I am trying to port to python.

   VBA:
   ------------------------
   Dim pA  as TypelibA.InterfaceA
   Dim pB   as TypelibB.InterfaceB
   Dim othermodule as OtherModule

   'After this line, pA points to a new "thingA"
   Set othermodule as New OtherModule
   othermodule.generator "thingA", pA

   'Cast
   Set pB = pA

   msgbox pB.Count()
   ------------------------

The above code works just fine. The cast ("Set pB = pA") is what seems to be giving me problems when converting to Python:

   Python:
   ------------------------
pA = othermodule.generator("thingA")
   print pA
   #output: <win32com.gen_py.TypelibA.InterfaceA instance at 0x13123176>

   #Now, the "cast"
   mod = gencache.GetModuleForTypelib(typelibB_CLSID,0x0,1,0)
   pB = mod.InterfaceB(pA)

   #Check cast
   print pB
#output: <win32com.gen_py.TypelibeB.InterfaceB instance at 0x13161656> #Looks good?

   #Test
   print pB.Count()
#Output: pywintypes.com_error: (-2147319765, 'Element not found.', None, None)

I have also tried different methods for casting. Most of the others (say, by using the IID directly) give me __repr__'s with nonsensical mixtures, such as "TypelibA.interfaceB", even though interfaceB is only defined in TypelibB. "CastTo" fails because "The interface does not appear in the same library as the object."

All casting approaches result in the same "Element not found" error. All I know about InterfaceB is that it is probably a Collection or derived from a Collection. I've read somewhere about issues with "dependent typelibs." Is this what I'm coming up against? Any ideas?

Many thanks,

 -Ben

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to