# Class factory utilities. import pythoncom def RegisterClassFactories(clsids, flags = None, clsctx = None): """Given a list of CLSID, create and register class factories. Returns a list, which should be passed to RevokeClassFactories """ if flags is None: flags = pythoncom.REGCLS_MULTIPLEUSE|pythoncom.REGCLS_SUSPENDED if clsctx is None: clsctx = pythoncom.CLSCTX_LOCAL_SERVER ret = [] for clsid in clsids: # Some server append '-Embedding' etc if clsid[0] not in ['-', '/']: factory = pythoncom.MakePyFactory(clsid) regId = pythoncom.CoRegisterClassObject(clsid, factory, clsctx, flags) ret.append((factory, regId)) return ret def RevokeClassFactories(infos): for factory, revokeId in infos: pythoncom.CoRevokeClassObject(revokeId)