Симуляция пера Win32 не работает с InjectTouchInput()

Я использую win32 touchinjection на рабочем столе Windows 10.

Я два дня пытался получить симуляцию пера.

Код ниже работает с 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();

Будем весьма благодарны за любую информацию о том, как я могу это сделать или отладить это дальше.

0 ответов

Там новый InjectSyntheticPointerInput API очень похож на InjectTouchInput который поддерживает перо, а также сенсорный. Не могу помочь с C# или.NET, но я думаю, что это может быть выставлено таким же образом. Единственная проблема заключается в том, что он поддерживается только в Windows 10 1809 и выше, поэтому вам потребуется как минимум та версия Windows SDK (которая поддерживает только Visual Studio 2017, но не 2015, FYI).

Другие вопросы по тегам