Я пишу программу на 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);