我正在尝试记录游戏中的鼠标移动情况,以便我可以回放它。游戏是使命召唤4,尽管这与这个问题无关。与此相关的是,大多数第一人称射击游戏在您移动鼠标光标时会重新居中,这样您就不会碰到任何边界。搜索一段时间后,我无法找到关于此在线的任何信息。我目前使用鼠标钩(WH_MOUSE)来跟踪鼠标移动(WM_MOUSEMOVE)。当我列出这些消息时,我可以看到光标被拉回screenResolutionX/2,screenResolutionY/2(屏幕中心)。在游戏重新居中前获取游标在游戏中的位置
我第一次尝试解决这个问题就是忽略这些消息,如果它们等于屏幕中心,所以当我回放这些鼠标移动时,重新居中会被忽略。我认为这可以解决问题,但现在当我回放鼠标移动时,鼠标变得太远(与我记录的方式不同)。当我在游戏的主菜单中进行相同的录制/回放(光标未被重新居中)时,回放非常准确。我的问题是:考虑到游戏会重新集中光标,我该如何准确记录游戏中的鼠标移动?
在此先感谢。
编辑:让我澄清我在问什么。我只想记录实际的用户鼠标输入,而不是重新集中鼠标光标的游戏。
听起来像你应该拦截鼠标**之前,**他们被发送到游戏的窗口。虽然我不确定如何去做这件事,但TBH – YePhIcK
我已经遇到过SO帖子,但我不同意驱动程序/过滤器是完成我所要做的事情所必需的。只有当我想在鼠标数据到达Windows之前拦截鼠标数据时,情况才会如此,而不是在重新集中之前我想拦截它。也许有一种方法可以确定鼠标消息的来源,如果它是由游戏进程发送的,那么我会忽略它?我找不到像这样的东西.. –
“Windows”是一个超载的术语。在上面的上下文中,“窗口”的意思是“游戏的窗口”,而不是“Windows的操作系统” – YePhIcK