Jan, and others, my apologies. I don't have time to support comtypes any longer (apart that I may, from time to time, answer some easy or even interesting questions on this mailing list).
I don't even have a machine setup so that I can connect to the sourceforge SVN server, so I cannot commit patches any more. (If someone wants to take over the project, that would be great). Thomas Am 17.04.2012 10:31, schrieb Jan Wedel: > Hi, > > Ive patched comtypes to support COM categories. In my case, an OPC > client requires categories. It checks the registry for supported > categories and if not one category is found, it will not support > interaction with the server even if the server has implemented and > published all required interfaces. > > An object can publish its supported categories which are represented by > an registry entry. > > Ive changed the "comtypes\server\register.py" and added a few lines > (see diff below). I'm not sure if I used the registry functions > correctly, but it works for me. Using the following code, you can add a > new attribute "_reg_catids_" to your python COM class which should be a > list of GUID strings: > > class MyComServer(CoClass): > (...) > > _reg_catids_ = [ '{ FIRST CATID }', '{ SECOND CATID }', ] > > (..) > > This is probably not the most flexible way to do it (it may support e.g. > interface objects instead of strings), but for me it works perfectly. It > would be nice if this could be added to comtypes trunk. > > This is the diff: > > --- C:/Python26/Lib/site-packages/comtypes/server/register.py.old Mi > Aug 19 22:17:08 2009 > +++ C:/Python26/Lib/site-packages/comtypes/server/register.py Di Apr > 17 10:17:47 2012 > @@ -296,6 +296,12 @@ > append(HKCR, "CLSID\\%s\\LocalServer32" % reg_clsid, > "", "%s %s" % (exe, script)) > else: > append(HKCR, "CLSID\\%s\\LocalServer32" % reg_clsid, > "", "%s" % exe) > + > + reg_catids = getattr(cls, "_reg_catids_", None) > + if reg_catids is not None: > + append(HKCR, "CLSID\\%s\\Implemented Categories" % > reg_clsid, "", "") > + for cat_id in reg_catids: > + append(HKCR, "CLSID\\%s\\Implemented Categories\\%s" % > (reg_clsid, cat_id), "", "") > > # Register InprocServer32 only when run from script or from > # py2exe dll server, not from py2exe exe server. > > > ------------------------------------------------------------------------------ > Better than sec? Nothing is better than sec when it comes to > monitoring Big Data applications. Try Boundary one-second > resolution app monitoring today. Free. > http://p.sf.net/sfu/Boundary-dev2dev ------------------------------------------------------------------------------ For Developers, A Lot Can Happen In A Second. Boundary is the first to Know...and Tell You. Monitor Your Applications in Ultra-Fine Resolution. Try it FREE! http://p.sf.net/sfu/Boundary-d2dvs2 _______________________________________________ comtypes-users mailing list comtypes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/comtypes-users