【发布时间】: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