27 lines
850 B
Python
27 lines
850 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)
|