0

我在 Windows 10 桌面上使用 win32 touchinjection。

我已经尝试了两天来进行笔模拟。

下面的代码适用于 PointerInputType.Touch 但我需要压力和方向,这似乎不起作用。

GetLastError() 返回 87,这意味着参数错误,但我已经尝试了我能想到的每一对参数。

       InitializeTouchInjection();

        pointer = new PointerTouchInfo();

        pointer.PointerInfo.PointerId = 1;
        pointer.PointerInfo.pointerType = PointerInputType.PEN;            

        pointer.TouchMasks = TouchMask.PRESSURE | TouchMask.ORIENTATION;
    //  pointer.TouchMasks =  TouchMask.CONTACTAREA | TouchMask.ORIENTATION | TouchMask.PRESSURE;
        pointer.Pressure = 1024;
        pointer.Orientation = 90;

   //   pointer.PointerInfo.PtHimetricLocation.X = 50;
   //   pointer.PointerInfo.PtHimetricLocation.Y = 200;
        pointer.PointerInfo.PtPixelLocation.X = 50;
        pointer.PointerInfo.PtPixelLocation.Y = 200;          

        pointer.PointerInfo.PointerFlags = PointerFlags.INCONTACT |PointerFlags.INRANGE| PointerFlags.DOWN;

        var a1=InjectTouchInput(1, new[] { pointer });
        var b1 = GetLastError();
        int errCode = Marshal.GetLastWin32Error();

任何有关我如何使其工作或进一步调试的信息将不胜感激。

4

1 回答 1

1

有一个新的InjectSyntheticPointerInputAPI 非常相似,InjectTouchInput它支持笔和触摸。对 C# 或 .NET 无能为力,但我想它可以以同样的方式公开。唯一的问题是它仅受 Windows 10 1809 及更高版本支持,因此您至少需要该版本的 Windows SDK(仅支持 Visual Studio 2017,不支持 2015,仅供参考)。

于 2019-01-25T00:01:18.270 回答