parameters: (excludeFlags = 0)
return_statement: return results
docstring: Return a list of TypelibSpec objects, one for each registered library.
docstring_summary: Return a list of TypelibSpec objects, one for each registered library.
docstring_tokens: Return a list of TypelibSpec objects one for each registered library .
function: def EnumTlbs(excludeFlags = 0):
  	"""Return a list of TypelibSpec objects, one for each registered library.
  	"""
  	key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, "Typelib")
  	iids = EnumKeys(key)
  	results = []
  	for iid, crap in iids:
  		try:
  			key2 = win32api.RegOpenKey(key, str(iid))
  		except win32api.error:
  			# A few good reasons for this, including "access denied".
  			continue
  		for version, tlbdesc in EnumKeys(key2):
  			major_minor = version.split('.', 1)
  			if len(major_minor) < 2:
  				major_minor.append('0')
  			# For some reason, this code used to assume the values were hex.
  			# This seems to not be true - particularly for CDO 1.21
  			# *sigh* - it appears there are no rules here at all, so when we need
  			# to know the info, we must load the tlb by filename and request it.
  			# The Resolve() method on the TypelibSpec does this.
  			# For this reason, keep the version numbers as strings - that
  			# way we can't be wrong!  Let code that really needs an int to work
  			# out what to do.  FWIW, http://support.microsoft.com/kb/816970 is
  			# pretty clear that they *should* be hex.
  			major = major_minor[0]
  			minor = major_minor[1]
  			key3 = win32api.RegOpenKey(key2, str(version))
  			try:
  				# The "FLAGS" are at this point
  				flags = int(win32api.RegQueryValue(key3, "FLAGS"))
  			except (win32api.error, ValueError):
  				flags = 0
  			if flags & excludeFlags==0:
  				for lcid, crap in EnumKeys(key3):
  					try:
  						lcid = int(lcid)
  					except ValueError: # not an LCID entry
  						continue
  					# Only care about "{lcid}\win32" key - jump straight there.
  					try:
  						key4 = win32api.RegOpenKey(key3, "%s\\win32" % (lcid,))
  					except win32api.error:
  						continue
  					try:
  						dll, typ = win32api.RegQueryValueEx(key4, None)
  						if typ==win32con.REG_EXPAND_SZ:
  							dll = win32api.ExpandEnvironmentStrings(dll)
  					except win32api.error:
  						dll = None
  					spec = TypelibSpec(iid, lcid, major, minor, flags)
  					spec.dll = dll
  					spec.desc = tlbdesc
  					spec.ver_desc = tlbdesc + " (" + version + ")"
  					results.append(spec)
  	return results
function_tokens: def EnumTlbs ( excludeFlags = 0 ) : key = win32api . RegOpenKey ( win32con . HKEY_CLASSES_ROOT , "Typelib" ) iids = EnumKeys ( key ) results = [ ] for iid , crap in iids : try : key2 = win32api . RegOpenKey ( key , str ( iid ) ) except win32api . error : # A few good reasons for this, including "access denied". continue for version , tlbdesc in EnumKeys ( key2 ) : major_minor = version . split ( '.' , 1 ) if len ( major_minor ) < 2 : major_minor . append ( '0' ) # For some reason, this code used to assume the values were hex. # This seems to not be true - particularly for CDO 1.21 # *sigh* - it appears there are no rules here at all, so when we need # to know the info, we must load the tlb by filename and request it. # The Resolve() method on the TypelibSpec does this. # For this reason, keep the version numbers as strings - that # way we can't be wrong!  Let code that really needs an int to work # out what to do.  FWIW, http://support.microsoft.com/kb/816970 is # pretty clear that they *should* be hex. major = major_minor [ 0 ] minor = major_minor [ 1 ] key3 = win32api . RegOpenKey ( key2 , str ( version ) ) try : # The "FLAGS" are at this point flags = int ( win32api . RegQueryValue ( key3 , "FLAGS" ) ) except ( win32api . error , ValueError ) : flags = 0 if flags & excludeFlags == 0 : for lcid , crap in EnumKeys ( key3 ) : try : lcid = int ( lcid ) except ValueError : # not an LCID entry continue # Only care about "{lcid}\win32" key - jump straight there. try : key4 = win32api . RegOpenKey ( key3 , "%s\\win32" % ( lcid , ) ) except win32api . error : continue try : dll , typ = win32api . RegQueryValueEx ( key4 , None ) if typ == win32con . REG_EXPAND_SZ : dll = win32api . ExpandEnvironmentStrings ( dll ) except win32api . error : dll = None spec = TypelibSpec ( iid , lcid , major , minor , flags ) spec . dll = dll spec . desc = tlbdesc spec . ver_desc = tlbdesc + " (" + version + ")" results . append ( spec ) return results