c# - InjectTouchInput 无法与 WPF .NET Framework 应用程序一起正常工作
问题描述
我正在准备简单的应用程序,其目标是在屏幕上的任何位置发送“触摸”事件。我有一些解决方案,但是当“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;
}
所以基本上重要的部分发生在“触摸”功能中。这段代码工作得非常好,除非我说它是在针对 .NET Framework 的 WPF 应用程序中使用的。当此解决方案与面向 .NET Core 3.1 的 WPF 应用程序一起使用时,一切正常。
我尝试使用一些属性,如“pointerFlags”、“orientation”、“pressure”等,但没有任何效果。我看不出如果我做错了什么,它看起来像是某种错误,导致“Touch”和针对 .NET Framework 的 WPF 应用程序无法正常工作。
任何建议高度赞赏。
解决方案
推荐阅读
- node.js - 在 New Relic 代理上对 PostgreSQL 的慢查询
- excel - 满足条件时调用宏
- c# - 实体框架 DbSet 未反映对基础数据的最新更改
- typescript - 我在查询 mongodb nodejs 中的集合时需要帮助
- python - 如何计算熊猫的调和平均值
- pdf - Docx4j 导出到 PDF/A-1b - base14 字体嵌入
- python - OpenStack CLI Windows 10“source”和“venv\Scripts\activate”说不被识别为内部或外部命令、可运行程序或批处理文件
- c++ - 如何创建用作队列的节点链表
- javascript - 如何通过 Javascript 中的过滤器对象过滤对象数组?
- ansible - MacAfee-tenable-Nessus rpm 包在使用 Ansible 安装到 Amazon Linux 时失败