整个计算机的鼠标移动可以使用SendInput(MOUSEEVENTF_MOVE)完成,在激活UE4窗口时可以对其进行操作。
考虑到存在多重UE4 Windows,可能需要有一个过渡服务来统一处理它们,但这可能需要切换应用程序,甚至需要桌面。
如果我能将鼠标移动信息发送到指定的UE4进程,那就太好了。不幸的是,键盘输入和鼠标单击可以使用WM_KEYDOWN/WM_LBUTTONDOWN等完成,但仅用WM_MOUSEMOVE无法完成鼠标移动。
我阅读了UE4的源代码,发现它使用VM_INPUT + GetDeviceData来处理鼠标移动事件,因为RAWINPUT的定义是不可见的,所以不能模拟RAWINPUT的消息。此外,微软已经将GlobalAlloc实现为LocalAlloc,因此,即使可以对其进行模拟,也不能将其注入不同的进程。即使可以将它注入到进程中,我也不能在UE4源代码中修改UE4的使用方法。
我听说在webrtc中有一种叫做“像素流”的技术,我们可以使用webrtc直接操作远程UE4应用程序,包括鼠标移动,我测试了它,这是真的,但是我不知道在webrtc中发送了什么消息,如果我知道,也许我可以发送一个类似的消息来操作它。
那么,在没有webrtc的情况下,可以同时操作多个UE4进程吗?
发布于 2020-06-30 11:47:06
我加入了EpicGames,可以克隆最新的源代码,当"bUsingHighPrecisionMouseInput是真的“时,我发现WM_MOUSEMOVE被忽略了。
https://stackoverflow.com/questions/62650246
复制相似问题