gpt4 book ai didi

c++ - Win32 向其他进程发送同步事件

转载 作者:行者123 更新时间:2023-11-28 07:17:12 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,让我可以更直观地移动 Dota 2 中的相机。按住空格时,它模拟鼠标中键,当光标到达屏幕边界时,它会跳回中心。使光标居中看起来像这样(简化):

PostMessage(w, WM_KEYUP, VK_MBUTTON, 0);
PostMessage(w, WM_MOUSEMOVE, 0, MAKELPARAM(screenWidth/2, screenHeight/2));
SetCursorPos(screenHeight/2, screenHeight/2)
PostMessage(w, WM_KEYDOWN, VK_MBUTTON, 0);

w 是 Dota 2 的窗口句柄。问题是,当出现这种情况时,Dota 仍然认为按钮已按下,因此相机跳转。我通过使用 SendInput 模拟关键事件而不是直接发送消息来使其部分工作,但这需要在事件之间暂停 10 毫秒,这不是我想要的。有没有办法查看消息是否已被另一个进程处理?

最佳答案

游戏通常使用 DirectInput 进行鼠标输入,这将为它们提供鼠标按钮的真实状态。 GetAsyncKeyState 还将检查实际的鼠标按钮状态。

如果游戏使用其他鼠标处理机制,您的消息不会有太大(或任何)影响。

您可以尝试使用 SendInput,它会更改 Windows 向应用程序报告的一些内部状态。

关于c++ - Win32 向其他进程发送同步事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20033395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com