def com_iter(obj: DispatchBaseClass, lcid=0): """ Iterate over the items that the given COM object contains. Yields the proper classes rather than the base classes. """ invkind = DISPATCH_METHOD | DISPATCH_PROPERTYGET try: enum = obj._oleobj_.InvokeTypes(DISPID_NEWENUM, lcid, invkind, (13, 10), ()) except com_error: # It is not possible to iterate over the given object raise IterationNotSupported else: for value in enum.QueryInterface(IID_IEnumVARIANT): yield _get_good_object_( value ) # When no clsid is provided, it returns the correct subclass
def _make_retval_(self, result): return _get_good_object_(result, resultCLSID=self.resultCLSID)
def __next__(self): return _get_good_object_(next(self._iter_), resultCLSID=self.resultCLSID)
def next(self): return _get_good_object_(self._iter_.next(), resultCLSID=self.resultCLSID)
def next(self): return _get_good_object_(self._iter_.next())
def __next__(self): return _get_good_object_(next(self._iter_), resultCLSID = self.resultCLSID)