2010/11/17 Mark Hammond <skippy.hamm...@gmail.com>: > On 16/11/2010 7:49 PM, Åsmund Hjulstad wrote: >> >> I am guessing the problem is that the library does not declare that the >> any classes implement these secondary interfaces. > > It should iterate over every interface in the .idl file - see > BuildOleItemsFromType in genpy.py (and maybe some "print debugging" in that > file will help you see what is going on)
It finds the interface, and calls oleItem, vtableItem = self._Build_Interface(type_info_tuple) however, with bForDemand = True, the generated module does not have members matching the interface. With bForDemand = false, it works. As an example, with an emtpy gen_py directory, the following code works for me, but changing to bForDemand = True does not. pisdk = gencache.EnsureModule('{0EE075CE-8C31-11D1-BD73-0060B0290178}', 0, 1, 1, bForDemand = False) medlemmer = pisdk.__dict__ for k,v in medlemmer.iteritems(): if k.startswith("IPIData2"): print k # This prints (only when bForDemand=False) # IPIData2 # IPIData2_vtables_dispatch_ # IPIData2_vtables_ pis = Dispatch("PISDK.PISDK") servernavn = "st-w240" server = pis.Servers(servernavn) tag = server.PIPoints('TT-20130/Meas1/PRIM') data = tag.Data data2 = pisdk.IPIData2(data) # with bForDemand=True, I get an exception here verdier = data2.InterpolatedValues2('*-1h','*','10m',asynchStatus=None) for v in verdier: print(v) I have not looked into how changing bForDemand would affect this, but am happy so far with the "old" behaviour. As a sidenote, the other secondary interface I have been struggling with, IPIAsynchStatus2, still does not work, regardless of the setting. It finds the interface, but oleItem, vtableItem = self._Build_Interface(type_info_tuple) returns a None oleItem. (don't know why, though.) Thank you very much for your help, the stuff I need is working now. Please let me know if more debugging is of interest to you. Åsmund _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32