home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import sys
- import win32api
- import win32con
- import pythoncom
- import winerror
- import os
- CATID_PythonCOMServer = '{B3EF80D0-68E2-11D0-A689-00C04FD658FF}'
-
- def _set_subkeys(keyName, valueDict, base = win32con.HKEY_CLASSES_ROOT):
- hkey = win32api.RegCreateKey(base, keyName)
-
- try:
- for key, value in valueDict.items():
- win32api.RegSetValueEx(hkey, key, None, win32con.REG_SZ, value)
- finally:
- win32api.RegCloseKey(hkey)
-
-
-
- def _set_string(path, value, base = win32con.HKEY_CLASSES_ROOT):
- win32api.RegSetValue(base, path, win32con.REG_SZ, value)
-
-
- def _get_string(path, base = win32con.HKEY_CLASSES_ROOT):
-
- try:
- return win32api.RegQueryValue(base, path)
- except win32api.error:
- return None
-
-
-
- def _remove_key(path, base = win32con.HKEY_CLASSES_ROOT):
-
- try:
- win32api.RegDeleteKey(base, path)
- except win32api.error:
- (code, fn, msg) = None
- if code != winerror.ERROR_FILE_NOT_FOUND:
- raise win32api.error, (code, fn, msg)
- code != winerror.ERROR_FILE_NOT_FOUND
-
-
-
- def recurse_delete_key(path, base = win32con.HKEY_CLASSES_ROOT):
-
- try:
- h = win32api.RegOpenKey(base, path)
- except win32api.error:
- (code, fn, msg) = None
- if code != winerror.ERROR_FILE_NOT_FOUND:
- raise win32api.error, (code, fn, msg)
- code != winerror.ERROR_FILE_NOT_FOUND
-
-
- try:
- while None:
-
- try:
- subkeyname = win32api.RegEnumKey(h, 0)
- except win32api.error:
- (code, fn, msg) = None
- if code != winerror.ERROR_NO_MORE_ITEMS:
- raise win32api.error, (code, fn, msg)
- code != winerror.ERROR_NO_MORE_ITEMS
- break
-
- continue
- _remove_key(path, base)
- win32api.RegCloseKey(h)
- return None
-
-
-
- def _cat_registrar():
- return pythoncom.CoCreateInstance(pythoncom.CLSID_StdComponentCategoriesMgr, None, pythoncom.CLSCTX_INPROC_SERVER, pythoncom.IID_ICatRegister)
-
-
- def _find_localserver_exe(mustfind):
- if not sys.platform.startswith('win32'):
- return sys.executable
- if pythoncom.__file__.find('_d') < 0:
- exeBaseName = 'pythonw.exe'
- else:
- exeBaseName = 'pythonw_d.exe'
- exeName = os.path.join(os.path.split(sys.executable)[0], exeBaseName)
- if not os.path.exists(exeName):
- exeName = os.path.join(sys.prefix, exeBaseName)
-
- if not os.path.exists(exeName):
- exeName = os.path.join(sys.prefix, 'PCbuild', exeBaseName)
-
- if not os.path.exists(exeName):
-
- try:
- key = 'SOFTWARE\\Python\\PythonCore\\%s\\InstallPath' % sys.winver
- path = win32api.RegQueryValue(win32con.HKEY_LOCAL_MACHINE, key)
- exeName = os.path.join(path, exeBaseName)
- except (AttributeError, win32api.error):
- pass
- except:
- None<EXCEPTION MATCH>(AttributeError, win32api.error)
-
-
- None<EXCEPTION MATCH>(AttributeError, win32api.error)
- if not os.path.exists(exeName):
- if mustfind:
- raise RuntimeError, "Can not locate the program '%s'" % exeBaseName
- mustfind
- return None
- return exeName
-
-
- def _find_localserver_module():
- import win32com.server as win32com
- path = win32com.server.__path__[0]
- baseName = 'localserver'
- pyfile = os.path.join(path, baseName + '.py')
-
- try:
- os.stat(pyfile)
- except os.error:
- ext = '.pyo'
- pyfile = os.path.join(path, baseName + ext)
-
- try:
- os.stat(pyfile)
- except os.error:
- raise RuntimeError, "Can not locate the Python module 'win32com.server.%s'" % baseName
- except:
- None<EXCEPTION MATCH>os.error
-
-
- None<EXCEPTION MATCH>os.error
-
- return pyfile
-
-
- def RegisterServer(clsid, pythonInstString = None, desc = None, progID = None, verProgID = None, defIcon = None, threadingModel = 'both', policy = None, catids = [], other = { }, addPyComCat = None, dispatcher = None, clsctx = None, addnPath = None):
- if not pythonInstString and not policy:
- raise TypeError, 'You must specify either the Python Class or Python Policy which implement the COM object.'
- not policy
- keyNameRoot = 'CLSID\\%s' % str(clsid)
- _set_string(keyNameRoot, desc)
- _set_string('AppID\\%s' % clsid, progID)
- if not clsctx:
- clsctx = pythoncom.CLSCTX_INPROC_SERVER | pythoncom.CLSCTX_LOCAL_SERVER
-
- if pythoncom.frozen:
- if sys.frozen == 'dll':
- clsctx = clsctx & pythoncom.CLSCTX_INPROC_SERVER
- else:
- clsctx = clsctx & pythoncom.CLSCTX_LOCAL_SERVER
-
- if clsctx & pythoncom.CLSCTX_INPROC_SERVER:
- if pythoncom.frozen:
- if hasattr(sys, 'frozendllhandle'):
- dllName = win32api.GetModuleFileName(sys.frozendllhandle)
- else:
- raise RuntimeError, "We appear to have a frozen DLL, but I don't know the DLL to use"
- hasattr(sys, 'frozendllhandle')
- dllName = os.path.basename(pythoncom.__file__)
- _set_subkeys(keyNameRoot + '\\InprocServer32', {
- None: dllName,
- 'ThreadingModel': threadingModel })
- else:
- _remove_key(keyNameRoot + '\\InprocServer32')
- if clsctx & pythoncom.CLSCTX_LOCAL_SERVER:
- if pythoncom.frozen:
- exeName = win32api.GetShortPathName(sys.executable)
- command = '%s /Automate' % (exeName,)
- else:
- exeName = _find_localserver_exe(1)
- exeName = win32api.GetShortPathName(exeName)
- pyfile = _find_localserver_module()
- command = '%s "%s" %s' % (exeName, pyfile, str(clsid))
- _set_string(keyNameRoot + '\\LocalServer32', command)
- else:
- _remove_key(keyNameRoot + '\\LocalServer32')
- if pythonInstString:
- _set_string(keyNameRoot + '\\PythonCOM', pythonInstString)
- else:
- _remove_key(keyNameRoot + '\\PythonCOM')
- if policy:
- _set_string(keyNameRoot + '\\PythonCOMPolicy', policy)
- else:
- _remove_key(keyNameRoot + '\\PythonCOMPolicy')
- if dispatcher:
- _set_string(keyNameRoot + '\\PythonCOMDispatcher', dispatcher)
- else:
- _remove_key(keyNameRoot + '\\PythonCOMDispatcher')
- if defIcon:
- _set_string(keyNameRoot + '\\DefaultIcon', defIcon)
- else:
- _remove_key(keyNameRoot + '\\DefaultIcon')
- if addnPath:
- _set_string(keyNameRoot + '\\PythonCOMPath', addnPath)
- else:
- _remove_key(keyNameRoot + '\\PythonCOMPath')
- if addPyComCat is None:
- addPyComCat = pythoncom.frozen == 0
-
- if addPyComCat:
- catids = catids + [
- CATID_PythonCOMServer]
-
- if catids:
- regCat = _cat_registrar()
- regCat.RegisterClassImplCategories(clsid, catids)
-
- if other:
- for key, value in other.items():
- _set_string(keyNameRoot + '\\' + key, value)
-
-
- if progID:
- if verProgID:
- _set_string(keyNameRoot + '\\ProgID', verProgID)
- else:
- _set_string(keyNameRoot + '\\ProgID', progID)
- if desc:
- _set_string(progID, desc)
-
- _set_string(progID + '\\CLSID', str(clsid))
- if verProgID:
- _set_string(progID + '\\CurVer', verProgID)
- _set_string(keyNameRoot + '\\VersionIndependentProgID', progID)
- if desc:
- _set_string(verProgID, desc)
-
- _set_string(verProgID + '\\CLSID', str(clsid))
-
-
-
-
- def GetUnregisterServerKeys(clsid, progID = None, verProgID = None, customKeys = None):
- ret = [
- ('CLSID\\%s' % str(clsid), win32con.HKEY_CLASSES_ROOT)]
- if verProgID:
- ret.append((verProgID, win32con.HKEY_CLASSES_ROOT))
-
- if progID:
- ret.append((progID, win32con.HKEY_CLASSES_ROOT))
-
- ret.append(('AppID\\%s' % str(clsid), win32con.HKEY_CLASSES_ROOT))
- if customKeys:
- ret = ret + customKeys
-
- return ret
-
-
- def UnregisterServer(clsid, progID = None, verProgID = None, customKeys = None):
- for args in GetUnregisterServerKeys(clsid, progID, verProgID, customKeys):
- recurse_delete_key(*args)
-
-
-
- def GetRegisteredServerOption(clsid, optionName):
- keyNameRoot = 'CLSID\\%s\\%s' % (str(clsid), str(optionName))
- return _get_string(keyNameRoot)
-
-
- def _get(ob, attr, default = None):
-
- try:
- return getattr(ob, attr)
- except AttributeError:
- pass
-
-
- try:
- bases = ob.__bases__
- except AttributeError:
- return default
-
- for base in bases:
- val = _get(base, attr, None)
- if val is not None:
- return val
-
- return default
-
-
- def RegisterClasses(*classes, **flags):
- if flags.has_key('quiet'):
- pass
- quiet = flags['quiet']
- if flags.has_key('debug'):
- pass
- debugging = flags['debug']
- for cls in classes:
- clsid = cls._reg_clsid_
- progID = _get(cls, '_reg_progid_')
- desc = _get(cls, '_reg_desc_', progID)
- spec = _get(cls, '_reg_class_spec_')
- verProgID = _get(cls, '_reg_verprogid_')
- defIcon = _get(cls, '_reg_icon_')
- threadingModel = _get(cls, '_reg_threading_', 'both')
- catids = _get(cls, '_reg_catids_', [])
- options = _get(cls, '_reg_options_', { })
- policySpec = _get(cls, '_reg_policy_spec_')
- clsctx = _get(cls, '_reg_clsctx_')
- tlb_filename = _get(cls, '_reg_typelib_filename_')
- addPyComCat = not _get(cls, '_reg_disable_pycomcat_', pythoncom.frozen != 0)
- addnPath = None
- if debugging:
- dispatcherSpec = _get(cls, '_reg_debug_dispatcher_spec_')
- if dispatcherSpec is None:
- dispatcherSpec = 'win32com.server.dispatcher.DefaultDebugDispatcher'
-
- debuggingDesc = '(for debugging)'
- options['Debugging'] = '1'
- else:
- dispatcherSpec = _get(cls, '_reg_dispatcher_spec_')
- debuggingDesc = ''
- options['Debugging'] = '0'
- if spec is None:
- moduleName = cls.__module__
- if moduleName == '__main__':
-
- try:
- moduleName = os.path.splitext(win32api.FindFiles(sys.argv[0])[0][8])[0]
- except (IndexError, win32api.error):
- raise TypeError, "Can't locate the script hosting the COM object - please set _reg_class_spec_ in your object"
- except:
- None<EXCEPTION MATCH>(IndexError, win32api.error)
-
-
- None<EXCEPTION MATCH>(IndexError, win32api.error)
- spec = moduleName + '.' + cls.__name__
- if not pythoncom.frozen:
- scriptDir = os.path.split(sys.argv[0])[0]
- if not scriptDir:
- scriptDir = '.'
-
- addnPath = win32api.GetFullPathName(scriptDir)
-
-
- RegisterServer(clsid, spec, desc, progID, verProgID, defIcon, threadingModel, policySpec, catids, options, addPyComCat, dispatcherSpec, clsctx, addnPath)
- if not quiet:
- print 'Registered:',
- if not progID:
- pass
- print spec, debuggingDesc
-
- if tlb_filename:
- tlb_filename = os.path.abspath(tlb_filename)
- typelib = pythoncom.LoadTypeLib(tlb_filename)
- pythoncom.RegisterTypeLib(typelib, tlb_filename)
- if not quiet:
- print 'Registered type library:', tlb_filename
-
- quiet
-
- extra = flags.get('finalize_register')
- if extra:
- extra()
-
-
-
- def UnregisterClasses(*classes, **flags):
- if flags.has_key('quiet'):
- pass
- quiet = flags['quiet']
- for cls in classes:
- clsid = cls._reg_clsid_
- progID = _get(cls, '_reg_progid_')
- verProgID = _get(cls, '_reg_verprogid_')
- customKeys = _get(cls, '_reg_remove_keys_')
- unregister_typelib = _get(cls, '_reg_typelib_filename_') is not None
- UnregisterServer(clsid, progID, verProgID, customKeys)
- if not quiet:
- print 'Unregistered:',
- if not progID:
- pass
- print str(clsid)
-
- if unregister_typelib:
- tlb_guid = _get(cls, '_typelib_guid_')
- None if tlb_guid is None else None<EXCEPTION MATCH>pythoncom.com_error
-
- extra = flags.get('finalize_unregister')
- if extra:
- extra()
-
-
-
- def UnregisterInfoClasses(*classes, **flags):
- ret = []
- for cls in classes:
- clsid = cls._reg_clsid_
- progID = _get(cls, '_reg_progid_')
- verProgID = _get(cls, '_reg_verprogid_')
- customKeys = _get(cls, '_reg_remove_keys_')
- ret = ret + GetUnregisterServerKeys(clsid, progID, verProgID, customKeys)
-
- return ret
-
-
- def UseCommandLine(*classes, **flags):
- unregisterInfo = '--unregister_info' in sys.argv
- unregister = '--unregister' in sys.argv
- if not flags.get('quiet', 0):
- pass
- flags['quiet'] = '--quiet' in sys.argv
- if not flags.get('debug', 0):
- pass
- flags['debug'] = '--debug' in sys.argv
- if not flags.get('unattended', 0):
- pass
- flags['unattended'] = '--unattended' in sys.argv
- if unregisterInfo:
- return UnregisterInfoClasses(*classes, **flags)
-
- try:
- if unregister:
- UnregisterClasses(*classes, **flags)
- else:
- RegisterClasses(*classes, **flags)
- except win32api.error:
- unregisterInfo
- exc = unregisterInfo
- if flags['unattended'] and exc[0] != winerror.ERROR_ACCESS_DENIED or sys.getwindowsversion()[0] < 5:
- raise
- sys.getwindowsversion()[0] < 5
- ShellExecuteEx = ShellExecuteEx
- import win32com.shell.shell
- shellcon = shellcon
- import win32com.shell
- import win32process
- import win32event
- import winxpgui
- if not flags['quiet']:
- print 'Requesting elevation and retrying...'
-
- new_params = []([ '"' + a + '"' for a in sys.argv ])
- hwnd = flags.get('hwnd', None)
- if hwnd is None:
-
- try:
- hwnd = winxpgui.GetConsoleWindow()
- except winxpgui.error:
- []
- []
- ' '.join
- hwnd = 0
- except:
- []<EXCEPTION MATCH>winxpgui.error
-
-
- []
- rc = ShellExecuteEx(hwnd = hwnd, fMask = shellcon.SEE_MASK_NOCLOSEPROCESS, lpVerb = 'runas', lpFile = win32api.GetShortPathName(sys.executable), lpParameters = new_params, lpDirectory = os.getcwd(), nShow = win32con.SW_SHOW)
- hproc = rc['hProcess']
- win32event.WaitForSingleObject(hproc, win32event.INFINITE)
- exit_code = win32process.GetExitCodeProcess(hproc)
- if exit_code:
- print 'Error: registration failed (exit code %s).' % exit_code
- print 'Please re-execute this command from an elevated command-prompt'
- print 'to see details about the error.'
- elif not flags['quiet']:
- print 'Elevated process succeeded.'
-
- except:
- []
-
-
-
- def RegisterPyComCategory():
- regCat = _cat_registrar()
- regCat.RegisterCategories([
- (CATID_PythonCOMServer, 1033, 'Python COM Server')])
-
- if not pythoncom.frozen:
-
- try:
- win32api.RegQueryValue(win32con.HKEY_CLASSES_ROOT, 'Component Categories\\%s' % CATID_PythonCOMServer)
- except win32api.error:
-
- try:
- RegisterPyComCategory()
- except pythoncom.error:
- pass
- except:
- None<EXCEPTION MATCH>pythoncom.error
-
-
- None<EXCEPTION MATCH>pythoncom.error
-
-
- None<EXCEPTION MATCH>win32api.error
-