【发布时间】:2020-11-15 20:49:17
【问题描述】:
我正在学习和构建我的第一个 UWP 测试应用,需要一种模拟方法:
- 相对鼠标移动
- 绝对鼠标定位
- 键盘输入(不一定是按键/释放键)
- 微调 x&y 滚动(这样我可以任意滚动)
我遇到了以下方法来执行此操作,但无法确定哪些方法是现代的/最适合 UWP 应用程序,还是一般来说最适合我的目的:
-
SendKeys(某种形式的SendInput的 C# 包装器?) -
SendInput(用于模拟事件的 win32 API,但它最适合 UWP 吗?) -
SendMessage(用于直接输入重点应用程序?) -
InputInjector(一种更现代但有限的模拟输入方式,不能绝对定位光标吗?) -
Cursor.Position(光标移动定位功能)
有很多方法和方法可以解决这个问题,我不完全确定哪些方法最受 UWP 应用支持或推荐,或者产生最佳结果。
这个项目的目的是能够通过我的手机进行交互来控制我的电脑(移动鼠标、打字)。例如,我的手机变成了触控板,或者我可以输入手机的软键盘,然后它会输入我的 PC。 PC 在本地网络上托管一个服务器,电话将输入数据包发送到该服务器。服务器接收这些输入数据包,并执行它们(这是我需要能够模拟键盘/鼠标事件的地方)。非常类似于Remote Mouse。
所以我的问题是:
- 这些方法之间有什么区别? (比如 Windows 窗体或 Win32??)
- 哪个最适合 UWP 应用/我的需要?
- 有没有更好(未列出)的解决方案?
这是我第一次研究这些东西(C#、.NET、Windows 开发),所以任何和所有信息都非常有用。
感谢您的帮助!
丹:D
编辑
进一步研究表明,InputInjector 在 UWP 引用下,SendKeys 和 Cursor.Position 都在 .NET 引用下。这是否意味着InputInjector是最理想的?
【问题讨论】:
-
你的最终目标是什么?模拟鼠标时你想达到什么目的?
-
@sommmen 刚刚进行了编辑以澄清,但本质上是为了执行它通过本地网络从手机接收的输入命令。
-
您想要应用程序本身是可编程的,还是想要制作一个teamviewer 版本?也许为您想要的解释一个用例/用户故事,因为我认为您想采取什么路线很重要。此外,我之前使用 AutoIT 进行 Windows 自动化,我相信它也有 dll,因此您也可以将其集成到 .NET 应用程序中autoitscript.com/site
-
@sommmen 刚刚再次编辑。它看起来与 teamviewer 类似,但更专业于某些情况:它只在同一个本地网络上,它唯一的手机到电脑,手机“变成”外部输入设备(例如,在你的手机屏幕上拖动一个触控板,类似地在 PC 上移动鼠标)。如此接近Remote Mouse。
-
@HansPassant 为答案干杯!您已链接到一个看起来用于测试的存储库,这不是我的应用程序的目的。这是否意味着真的没有任何正确的方法来模拟 UWP 应用程序中的输入事件?如果是这样,那么是否值得切换到 Win32 或其他东西?