Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # A little test server, complete with typelib, we can use for testing.
- # Originally submitted with bug:
- # [ 753154 ] memory leak wrapping object having _typelib_guid_ attribute
- # but modified by mhammond for use as part of the test suite.
- import sys, os
- import pythoncom
- import win32com
- import winerror
- from win32com.server.util import wrap
- try:
- __file__ # 2.3 only for __main__
- except NameError:
- __file__ = sys.argv[0]
- class CPippo:
- #
- # COM declarations
- #
- _reg_clsid_ = "{05AC1CCE-3F9B-4d9a-B0B5-DFE8BE45AFA9}"
- _reg_desc_ = "Pippo Python test object 5"
- _reg_progid_ = "Python.Test.Pippo.5"
- #_reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
- ### Link to typelib
- _typelib_guid_ = '{1728B2B9-B2EE-4657-8181-AB7B38AB847A}'
- _typelib_version_ = 1, 1
- _com_interfaces_ = ['IPippo']
- def __init__(self):
- self.MyProp1 = 10
- def Method1(self):
- return wrap(CPippo())
- def BuildTypelib():
- from distutils.dep_util import newer
- this_dir = os.path.dirname(__file__)
- idl = os.path.abspath(os.path.join(this_dir, "pippo.idl"))
- tlb=os.path.splitext(idl)[0] + '.tlb'
- print "Registering %s" % (tlb,)
- tli=pythoncom.LoadTypeLib(tlb)
- pythoncom.RegisterTypeLib(tli,tlb)
- def UnregisterTypelib():
- k = CPippo
- try:
- pythoncom.UnRegisterTypeLib(k._typelib_guid_,
- k._typelib_version_[0],
- k._typelib_version_[1],
- 0,
- pythoncom.SYS_WIN32)
- print "Unregistered typelib"
- except pythoncom.error, details:
- if details[0]==winerror.TYPE_E_REGISTRYACCESS:
- pass
- else:
- raise
- def main(argv=None):
- if argv is None: argv = sys.argv[1:]
- if '--unregister' in argv:
- # Unregister the type-libraries.
- UnregisterTypelib()
- else:
- # Build and register the type-libraries.
- BuildTypelib()
- import win32com.server.register
- win32com.server.register.UseCommandLine(CPippo)
- if __name__=='__main__':
- main(sys.argv)
Advertisement
Add Comment
Please, Sign In to add comment