首页 > 解决方案 > 为什么当我尝试在游戏中模拟鼠标移动时使用 c++ Input 类会导致 filck-move 进入地面(在游戏 ofc 中)?

问题描述

我想制作可以玩简单 3D 游戏的“机器人”。我已经开始使用我的世界了。无论 x 或 y 的值增加/减少多少,它都会导致可怕的轻弹移动,当我使用循环时最终会旋转)到地面,仅此而已(我试图删除标志 MOUSEEVENTF_ABSOLUTE)。我知道游戏将光标置于屏幕中间,然后在其移动时读取差异并再次居中光标。我想知道该方法有什么问题或如何正确执行,谢谢。

int main(){
    Sleep(3000);

    POINT point = showCoords();
    MouseMove(point.x + 0.1, point.y);
    Sleep(20);                                                                                      
    }

POINT getCords() {

    POINT point;

    if (GetCursorPos(&point))
        std::cout << point.x << "," << point.y << "\n";

    return point;                                                                                       
}

void MouseMove(int x, int y){
    double fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;
    double fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;
    double fx = x * (65535.0f / fScreenWidth);
    double fy = y * (65535.0f / fScreenHeight);
    INPUT Input = { 0 };
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
    Input.mi.dx = fx;
    Input.mi.dy = fy;
    ::SendInput(1, &Input, sizeof(INPUT));                                                          
}

标签: c++inputbotsmouse

解决方案


推荐阅读