c++ - 为什么当我尝试在游戏中模拟鼠标移动时使用 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));
}
解决方案
推荐阅读
- aws-amplify - 缺少 AWS Amplify Graphql 架构的属性,即使它确实存在
- scala - 运行 sbt 包时出错:对象 apache 不是包 org 的成员
- python-3.x - 使用 selenium 模块 Python 打开浏览器的另一种方法
- sql - SQL Server 中的时间范围仅适用于日期
- angular - 如何打破 TypeScript 中的循环
- postgresql - 在 PostgreSQL 函数中创建临时表会在不同函数调用之间产生冲突?
- python - 如何选择并提取具有相同ID且在jupyter中的一列中具有最小值的行?
- php - 使用 preg_replace 删除 wordpress 音频简码
- android - 如何使用改造 2 获取文件大小。我试过返回-1?
- ios - 缺少所有第三方音频单元