public virtual UIItemCollection ItemsWithin(Rect bounds, ActionListener actionListener)
        {
            var collection = new UIItemCollection();
            List <AutomationElement> descendants = Finder.Descendants(AutomationSearchCondition.All);

            foreach (AutomationElement automationElement in descendants)
            {
                if (!bounds.Contains(automationElement.Current.BoundingRectangle))
                {
                    continue;
                }

                var factory = new DictionaryMappedItemFactory();
                collection.Add(factory.Create(automationElement, actionListener));
            }
            return(collection);
        }
Beispiel #2
0
 public CashlinxDesktopLoader(string execFullPath)
 {
     if (string.IsNullOrEmpty(execFullPath))
     {
         return;
     }
     //try
     //{
     this.desktopApp       = Application.Launch(execFullPath);
     this.newDesktopWindow = this.desktopApp.GetWindow("Cashlinx Desktop", InitializeOption.NoCache);
     this.initialized      = true;
     this.factory          = new DictionaryMappedItemFactory();
     //}
     //catch(Exception eX)
     //{
     //this.initialized = false;
     //throw new ApplicationException("CashlinxDesktopLoader ctor threw exception:" + eX.Message, eX);
     //    this.initialized = true;
     //}
 }
        public virtual IUIItem Get(ContainerItemFactory containerItemFactory, SearchCriteria searchCriteria, ActionListener actionListener)
        {
            WhiteLogger.Instance.DebugFormat("Finding item based on criteria: ({0}) on ({1})", searchCriteria, initializeOption.Identifier);
            Point location = windowItemsMap.GetItemLocation(searchCriteria);

            if (location.Equals(RectX.UnlikelyWindowPosition))
            {
                WhiteLogger.Instance.Debug("[PositionBasedSearch] Could not find based on position, finding using search.");
                return(Create(containerItemFactory, searchCriteria, actionListener));
            }

            AutomationElement automationElement = AutomationElementX.GetAutomationElementFromPoint(location);

            if (automationElement != null && searchCriteria.AppliesTo(automationElement))
            {
                IUIItem item = new DictionaryMappedItemFactory().Create(automationElement, actionListener, searchCriteria.CustomItemType);
                return(UIItemProxyFactory.Create(item, actionListener));
            }

            WhiteLogger.Instance.DebugFormat("[PositionBasedSearch] UIItem {0} changed its position, finding using search.", searchCriteria);
            return(Create(containerItemFactory, searchCriteria, actionListener));
        }