private void SimulateTouch(int x, int y)
        {
            // Touch Down Simulate
            PointerTouchInfo contact = MakePointerTouchInfo(x, y, 5, 1);
            PointerFlags     oFlags  = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;

            contact.PointerInfo.PointerFlags = oFlags;
            bool bIsSuccess = TouchInjector.InjectTouchInput(1, new[] { contact });

            // Touch Move Simulate
            int nMoveIntervalX = this.GetRandomSeed().Next(-60, 60);
            int nMoveIntervalY = this.GetRandomSeed().Next(-60, 60);

            contact.Move(nMoveIntervalX, nMoveIntervalY);
            oFlags = PointerFlags.INRANGE | PointerFlags.INCONTACT | PointerFlags.UPDATE;
            contact.PointerInfo.PointerFlags = oFlags;
            TouchInjector.InjectTouchInput(1, new[] { contact });

            // Touch Up Simulate
            contact.PointerInfo.PointerFlags = PointerFlags.UP;
            TouchInjector.InjectTouchInput(1, new[] { contact });
        }
        private PointerTouchInfo MakePointerTouchInfo(int x, int y, int radius,
                                                      uint orientation = 90, uint pressure = 32000)
        {
            PointerTouchInfo contact = new PointerTouchInfo();

            contact.PointerInfo.pointerType = PointerInputType.TOUCH;
            contact.TouchFlags  = TouchFlags.NONE;
            contact.Orientation = orientation;
            contact.Pressure    = pressure;
            contact.TouchMasks  = TouchMask.CONTACTAREA | TouchMask.ORIENTATION | TouchMask.PRESSURE;
            contact.PointerInfo.PtPixelLocation.X = x;
            contact.PointerInfo.PtPixelLocation.Y = y;
            uint unPointerId = IdGenerator.GetUinqueUInt();

            Console.WriteLine("PointerId    " + unPointerId);
            contact.PointerInfo.PointerId = unPointerId;
            contact.ContactArea.left      = x - radius;
            contact.ContactArea.right     = x + radius;
            contact.ContactArea.top       = y - radius;
            contact.ContactArea.bottom    = y + radius;
            return(contact);
        }