我正在学习和构建我的第一个 UWP 测试应用,需要一种模拟方法:
- 相对鼠标移动
- 绝对鼠标定位
- 键盘输入(不一定是按键/释放)
- 微调 x&y 滚动(这样我就可以滚动任意数量)
我遇到过以下执行此操作的方法,但无法弄清楚哪些是现代的/最适合 UWP 应用程序或一般最适合我的目的:
SendKeys
(某种类型的SendInput
的 C# 包装器?)SendInput
(用于模拟事件的 win32 API,但它是否最适合 UWP?)SendMessage
(用于直接输入焦点应用程序?)InputInjector
(一种更现代但有限的模拟输入方式,不能绝对定位光标?)Cursor.Position
(光标移动和定位的函数)
有很多方法可以解决这个问题,我不完全确定其中哪些最受支持或推荐用于 UWP 应用程序,或者产生最好的结果。
这个项目的目的是能够通过我的手机进行交互来控制我的电脑(移动鼠标、输入)。例如,我的手机变成了触控板,或者我可以在手机的软键盘上输入,然后它会输入我的电脑。 PC 在本地网络上托管服务器,手机将输入数据包发送到该服务器。服务器接收这些输入数据包,并执行它们(这是我需要能够模拟键盘/鼠标事件的地方)。与 Remote Mouse 非常相似.
所以我的问题是:
- 这些方法有什么区别? (比如 Windows 窗体或 Win32??)
- 哪个最适合 UWP 应用/我的需求?
- 是否有更好的(未列出)解决方案?
这是我第一次了解这些东西(C#、.NET、Windows 开发),所以所有信息都非常有帮助。
感谢您的帮助!
丹:D
编辑
进一步的研究表明InputInjector
在 UWP 引用下,SendKeys
和 Cursor.Position
都在 .NET 引用下。这是否意味着 InputInjector
是最理想的?
最佳答案
经过更多研究,我发现 InjectedInput
是唯一包含在 UWP API 中的。
需要说明的是,在开发 Windows 应用程序时,您必须在 Visual Studio 中选择一种“类型”来使用,可以是 WPF、Windows 窗体、Win32 或 UWP。 UWP 是唯一(大部分)可以上传到 Microsoft Store 的。
这意味着我只能在 UWP API 中使用方法,在这种情况下,WinRT 是 UWP 的一部分,InjectedInput
是 WinRT 的一部分。
它支持使用 "Absolute"
选项的绝对鼠标定位,使用 "Move"
选项的相对鼠标移动,以及使用 "Wheel"< 的滚动
和 “HWheel”
选项用于 InjectedInputMouseOptions
旁边InjectedInputMouseInfo
.键盘输入可以用 InjectedInputKeyOptions
完成旁边InjectedInputKeyboardInfo
.
使用“Option”
变体类修改输入的效果(比如选择要改变的选项),然后使用InputInjector
使用其 TryCreate()
方法实例化它,以及相关的 InjectMouseInput
或 InjectKeyboardInput
来执行输入注入(inject)。
关于C# .NET - SendKeys、SendInput、SendMessage、InputInjector 和 Cursor.Position 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63099794/