【问题标题】:How to send simulated operation of mouse movement to UE4 application如何将鼠标移动的模拟操作发送到 UE4 应用程序
【发布时间】:2020-10-20 07:57:42
【问题描述】:

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

鉴于有多个 UE4 窗口,可能需要有一个中转服务来统一处理它们,但这可能需要切换应用程序甚至桌面。

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

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

听说UE4里面有个叫“pixel streaming”的技术,我们可以用webrtc直接操作远程UE4应用,包括鼠标移动,我测试了一下,是真的,但是我不知道webrtc发的是什么消息,如果知道的话,或许可以发个类似的消息来操作一下。

那么,没有webrtc有没有办法同时操作多个UE4进程呢?

【问题讨论】:

    标签: c++ c unreal-engine4 mousemove


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-30
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多