#c# #.net #wpf #automation #touch
Вопрос:
Я готовлю простое приложение, цель которого-отправлять события «Прикосновения» в любое место на экране. У меня есть какое — то решение, но оно не работает, когда событие «Касание» отправляется, например, в приложение WPF (.NET Framework), чтобы нажать кнопку в приложении WPF. Вот код:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
NativeMethods.InitializeTouchInjection(1, TouchFeedback.INDIRECT);
Touch(360, 220);
}
private void Touch(int X, int Y)
{
// Touch Down
PointerTouchInfo contact = CreatePointerInfo(X, Y, 2);
PointerFlags pointerFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;
contact.PointerInfo.PointerFlags = pointerFlags;
NativeMethods.InjectTouchInput(1, new[] { contact });
//Touch Up
contact.PointerInfo.PointerFlags = PointerFlags.UP;
NativeMethods.InjectTouchInput(1, new[] { contact });
}
private PointerTouchInfo CreatePointerInfo(int x, int y, int radius)
{
PointerTouchInfo contact = new PointerTouchInfo();
contact.PointerInfo.pointerType = PointerInputType.TOUCH;
contact.TouchFlags = TouchFlags.NONE;
contact.Orientation = 90;
contact.Pressure = 100;
contact.TouchMasks = TouchMask.CONTACTAREA | TouchMask.ORIENTATION | TouchMask.PRESSURE;
contact.PointerInfo.PtPixelLocation.X = x;
contact.PointerInfo.PtPixelLocation.Y = y;
uint unPointerId = IdGenerator.GetUinqueUInt();
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;
}
Таким образом, в основном важная часть происходит в функции «Прикосновение». Этот фрагмент кода работает отлично, если, как я уже сказал, он не используется в приложении WPF, ориентированном на платформу .NET Framework. Когда это решение используется с приложением WPF, ориентированным на .NET Core 3.1, все работает нормально.
Я попытался поиграть с некоторыми свойствами, такими как «Указатели», «ориентация», «давление» и т. Д., Но без какого-либо эффекта. Я не вижу, делаю ли я что-то не так, это похоже на какую-то ошибку, которая приводит к неправильной работе «Touch» и приложения WPF, ориентированного на .NET Framework.
Любые предложения высоко ценятся.