可以使用SendInput(MOUSEEVENTF_MOVE)完成整个计算机的鼠标移动,当激活UE4窗口时可以进行操作。
鉴于存在多个UE4 Windows ,可能需要具有传输服务来统一处理它们,但这可能需要切换应用程序甚至是台式机。
如果可以将鼠标移动信息发送到指定的UE4进程,那就太好了。不幸的是,键盘输入和鼠标单击可以通过WM_KEYDOWN / WM_LBUTTONDOWN等完成,,但不能单独使用WM_MOUSEMOVE 进行鼠标移动
我阅读了UE4的源代码,发现它使用 VM_INPUT + GetDeviceData 来进行鼠标移动事件,因为RAWINPUT的定义是不可见的,所以我无法模拟RAWINPUT的消息。此外,Microsoft已将GlobalAlloc实现为LocalAlloc。因此,即使可以模拟它,也不能将其注入(inject)到不同的进程中。即使可以将其注入(inject)到流程中,我也无法在UE4源代码中修改GetDeviceData的使用方法。
听说在UE4中有一种称为“像素流”的技术,我们可以使用webrtc直接操作远程UE4应用程序,包括鼠标移动,我对其进行了测试,这是真的,但是我不知道发送什么消息在webrtc中,如果我知道的话,也许我可以向它发送类似的消息来对其进行操作。
那么,有没有办法在没有webrtc的情况下同时操作多个UE4进程?

最佳答案

我已经加入EpicGames,并且可以克隆最新的源代码,当“bUsingHighPrecisionMouseInput为true”时,我发现WM_MOUSEMOVE已被忽略。

关于c++ - 如何将鼠标移动的模拟操作发送到UE4应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62650246/

10-11 21:19