px schrieb:
> Hi there,
>
> Is there a way I can change a generated typelib dynamically without having
> to modify the generated .py file itself? (ie. the files generated in
> C:\Python25\Lib\site-packages\comtypes\gen).
No, not really. The _methods_ list is processed when the class is created,
later changes to _methods_ have no effect. The processing occurrs in
_cominterface_meta._make_methods_, in comtypes\__init__.py line 608.
In principle, you could extract code from that function and change the generated
COM method, but I wouldn't recommend that.
Can't you modify the generated file and be done? Must it be regenerated
more than once?
> In particular I just want to
> change the signature of one of the methods. I tried this:
>
> import comtypes.gen.MyLib as MyLib
>
> MyLib.Channel._methods_[3] = comtypes.COMMETHOD([], HRESULT, 'ReadPacket',
> ( ['in'], POINTER(c_ubyte),
> 'data' ),
> ( ['in'], c_int, 'length' ),
> ( ['out'], POINTER(c_int),
> 'actual' ))
>
> But it seems like comtypes doesn't "see" or "register" this change.
> Although if I "print MyLib.Channel._methods_[3]" I see it is changed
> accordingly. Of course if I make this change in the typelib file directly
> it works.
>
Another approach would be that you write a new implementation of the
ReadPacket function, and assign that to the class before you are using it,
like so:
import comtypes.gen.MyLib as MyLib
def MyReadPacket(self, ...):
....
MyLib.Channel.ReadPacket = MyReadPacket
Would that work?
--
Thanks,
Thomas
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
comtypes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/comtypes-users