C++ 如何将鼠标移动的模拟操作发送到UE4应用程序

C++ 如何将鼠标移动的模拟操作发送到UE4应用程序,c++,c,unreal-engine4,mousemove,C++,C,Unreal Engine4,Mousemove,整个计算机的鼠标移动可以使用SendInput(MOUSEEVENTF_MOVE)完成,当UE4窗口激活时,可以对其进行操作 考虑到存在多个UE4窗口,可能需要一个转换服务来统一处理它们,但这可能需要切换应用程序甚至桌面 如果我能将鼠标移动信息发送到指定的UE4进程,那就太好了。不幸的是,键盘输入和鼠标点击可以通过WM_KEYDOWN/WM_LBUTTONDOWN等来完成,但是单独的鼠标移动不能通过WM_MOUSEMOVE来完成 我阅读了UE4的源代码,发现它对鼠标移动事件使用了VM_INPUT

整个计算机的鼠标移动可以使用SendInput(MOUSEEVENTF_MOVE)完成,当UE4窗口激活时,可以对其进行操作

考虑到存在多个UE4窗口,可能需要一个转换服务来统一处理它们,但这可能需要切换应用程序甚至桌面

如果我能将鼠标移动信息发送到指定的UE4进程,那就太好了。不幸的是,键盘输入和鼠标点击可以通过WM_KEYDOWN/WM_LBUTTONDOWN等来完成,但是单独的鼠标移动不能通过WM_MOUSEMOVE来完成

我阅读了UE4的源代码,发现它对鼠标移动事件使用了VM_INPUT+GetDeviceData,因为RAWINPUT的定义是不可见的,所以我无法模拟RAWINPUT的消息。此外,Microsoft已将GlobalAlloc实现为LocalAlloc,因此,即使可以对其进行模拟,也无法将其注入到不同的进程中。即使它可以被注入到进程中,我也不能在UE4源代码中修改GetDeviceData的使用方法

我听说UE4中有一种叫做“像素流”的技术,我们可以使用webrtc直接操作远程UE4应用程序,包括鼠标移动,我测试过,这是真的,但我不知道webrtc发送了什么消息,如果我知道,也许我可以发送类似的消息来操作它


因此,有没有办法在没有webrtc的情况下同时操作多个UE4进程?

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