codekingpro/portable-devtools
114k
1# Class factory utilities.2import pythoncom3 4 5def RegisterClassFactories(clsids, flags=None, clsctx=None):6 """Given a list of CLSID, create and register class factories.7 8 Returns a list, which should be passed to RevokeClassFactories9 """10 if flags is None:11 flags = pythoncom.REGCLS_MULTIPLEUSE | pythoncom.REGCLS_SUSPENDED12 if clsctx is None:13 clsctx = pythoncom.CLSCTX_LOCAL_SERVER14 ret = []15 for clsid in clsids:16 # Some server append '-Embedding' etc17 if clsid[0] not in ["-", "/"]:18 factory = pythoncom.MakePyFactory(clsid)19 regId = pythoncom.CoRegisterClassObject(clsid, factory, clsctx, flags)20 ret.append((factory, regId))21 return ret22 23 24def RevokeClassFactories(infos):25 for factory, revokeId in infos:26 pythoncom.CoRevokeClassObject(revokeId)27 