我正在编写一个C ++程序来移动鼠标并在游戏中执行向左/向下的向上/向下活动。鼠标左键事件(向上和向下)在全屏模式下可以正常工作,但是我无法在全屏模式下移动鼠标,或者无法使鼠标指向游戏中的特定对象。一旦我暂停游戏或移出全屏,我会看到鼠标指针移动,但是当我恢复游戏时,我看不到鼠标的移动,但是当我物理地移动鼠标(在游戏全屏模式下)时,我看到光标在移动下面是程序。请注意,我也尝试了相对坐标(使用GetSystemMetrics)方法(第二个代码段)。我无法在这方面取得进展,也无法向社区寻求帮助
void mouse_input(int xx, int yy, int shoot_times)
{
INPUT Inputs[3] = { 0 };
Inputs[0].type = INPUT_MOUSE;
Inputs[0].mi.dx = xx; // desired X coordinate
Inputs[0].mi.dy = yy; // desired Y coordinate
Inputs[0].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_VIRTUALDESK | MOUSEEVENTF_ABSOLUTE;
Inputs[1].type = INPUT_MOUSE;
Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
Inputs[2].type = INPUT_MOUSE;
Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
for (int i = 0; i < shoot_times; ++i)
{
std::cout << "Sending Mouse Inputs\n";
SendInput(3, Inputs, sizeof(INPUT));
}
}
}
double fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;
double fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;
std::cout << "fScreenWidth(" << fScreenWidth << ")\n";
std::cout << "fScreenHeight(" << fScreenHeight << ")\n";
double fx = (i.x + (i.w/2))*(65535.0f / fScreenWidth);
double fy = (i.y + (i.y/2))*(65535.0f / fScreenHeight);