22 lines
766 B
Python
22 lines
766 B
Python
# 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)
|