public void TestClick(FlaUI.Core.Shapes.Point p)
        {
            var currClickPosition = Position;

            AutomationElementPropertyValues properties = appWindow.Properties;
            double leftPoisition = properties.BoundingRectangle.Value.Left;
            double topPoisition  = properties.BoundingRectangle.Value.Top;

            p.X += leftPoisition < 0 ? 0 : leftPoisition;
            p.Y += topPoisition < 0 ? 0 : topPoisition;

            p.X = p.X * 1.25;
            p.Y = p.Y * 1.25;

            Position = p;

            if (LastClickPositions.Count > 0 && LastClickPositions[MouseButton.Left].Equals(currClickPosition))
            {
                // Get the timeout needed to not fire a double click
                var timeout = (int)User32.GetDoubleClickTime() - DateTime.Now.Subtract(LastClickTimes[MouseButton.Left]).Milliseconds;
                // Wait the needed time to prevent the double click
                if (timeout > 0)
                {
                    Thread.Sleep(timeout);
                }
            }

            MouseButton mouseButton = MouseButton.Left;

            Down(mouseButton, p);
            Up(mouseButton, p);

            LastClickTimes[mouseButton]     = DateTime.Now;
            LastClickPositions[mouseButton] = Position;
        }
 protected BasicAutomationElementBase(AutomationBase automation)
 {
     Automation = automation;
     Properties = new AutomationElementPropertyValues(this);
 }