如何使用InjectTouchInput点按两个点

问题描述 投票:0回答:1

我想用c[0]点击两个点(c[1]InjectTouchInput()),但只点击了c[1],没有点击了c[0]。>

有什么问题吗?

InjectTouchInput()是用于模拟触摸事件的API。

https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-injecttouchinput

可以由C#调用。https://www.nuget.org/packages/TCD.System.TouchInjection/

using System;
using TCD.System.TouchInjection;
using static TCD.System.TouchInjection.TouchInjector;


// https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-injecttouchinput?redirectedfrom=MSDN

namespace HelloWorld
{
    class Program
    {
        private static PointerTouchInfo createPointer(uint id)
        {
            var pointer = new PointerTouchInfo();
            //We can add different additional touch data 
            pointer.TouchMasks = TouchMask.PRESSURE;
            pointer.Pressure = 100;


            //Pointer ID is for gesture tracking 
            pointer.PointerInfo.PointerId = id;
            pointer.PointerInfo.pointerType = PointerInputType.TOUCH;

            return pointer;
        }
        private static void tap(int x, int y)
        {
            var c = new[] { createPointer(1), createPointer(2) };

            // Touch contact down
            c[0].PointerInfo.PtPixelLocation.X = x;
            c[0].PointerInfo.PtPixelLocation.Y = y;
            c[0].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.INCONTACT | PointerFlags.DOWN;
            c[1].PointerInfo.PtPixelLocation.X = x+110;
            c[1].PointerInfo.PtPixelLocation.Y = y;
            c[1].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.INCONTACT | PointerFlags.DOWN;
            InjectTouchInput(2, c);

            // Touch contact up and transition to hover
            c[0].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UP;
            c[1].PointerInfo.PointerFlags = PointerFlags.INRANGE | PointerFlags.UP;
            InjectTouchInput(2, c);

        }
        static void Main(string[] args)
        {
            if (InitializeTouchInjection())
            {
                tap(350, 650);
            } else
            {
                Console.WriteLine("Error");
            }

            Console.WriteLine("Hello Tap Emulation!");
        }
    }
}

我想用InjectTouchInput()轻按两个点(c [0]和c [1]),但只轻按c [1],不轻按c [0]。有什么不对? InjectTouchInput()是模拟触摸事件的API。 https:// ...

c# windows winapi touch touch-event
1个回答
0
投票

浏览器触摸测试

© www.soinside.com 2019 - 2024. All rights reserved.