Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys, os
- import pythoncom
- import win32com
- import winerror
- from win32com.server.util import wrap
- from win32com.server.exception import COMException
- class CTTSEngineSapi:
- #
- # COM declarations
- #
- _reg_clsid_ = "{202AF9B0-1315-401C-AC66-EB2ACE56A44A}"
- _reg_desc_ = "Python TTS Engine"
- _reg_progid_ = "Python.TTSEngine"
- ###
- ### Link to typelib
- _typelib_guid_ = '{9903F14C-12CE-4c99-9986-2EE3D7D588A8}'
- _typelib_version_ = 5, 4
- _com_interfaces_ = ['ISpTTSEngine', 'ISpObjectWithToken']
- _public_methods_ = [ 'GetOutputFormat', 'Speak', 'SetObjectToken', 'GetObjectToken']
- def __init__(self):
- self.MyProp1 = 10
- f = open("C://Users/myuser/Projects/PythonCOM/test.txt", "w")
- f.close()
- def Speak(self):
- raise COMException("throw error")
- return wrap(CPippo())
- def GetOutputFormat(self):
- raise COMException("throw error")
- return wrap(CPippo())
- def SetObjectToken(self):
- f = open("C://Users/myuser/Projects/PythonCOM/tekst.txt", "w")
- f.close()
- raise COMException("throw error")
- return wrap(CPippo())
- def GetObjectToken(self):
- raise COMException("throw error")
- return wrap(CPippo())
- def RegisterTypeLib():
- this_dir = os.path.dirname(__file__)
- tlb = os.path.abspath(os.path.join(this_dir, "sapiddk.tlb"))
- print "Registering %s" % (tlb,)
- tli=pythoncom.LoadTypeLib(tlb)
- pythoncom.RegisterTypeLib(tli,tlb)
- def UnregisterTypelib():
- k = CTTSEngineSapi
- 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:
- # Register the type-libraries.
- RegisterTypeLib()
- import win32com.server.register
- win32com.server.register.UseCommandLine(CSpeectSapi)
- if __name__=='__main__':
- main(sys.argv)
Advertisement
Add Comment
Please, Sign In to add comment