Как переместить курсор относительно текущего положения?
Изучал я вот этот материал: https://learn.microsoft.com/ru-ru/windows/win32/menurc/cursor-functions Однако кроме команд SetCursorPos и SetPhysicalCursorPos у меня ничего не работает. Я могу переместить курсор на абсолютные координаты. Но мне нужно переместить на относительные координаты (относительно курсора). Если вы попробуете считать текущее положение курсора и к переменной добавить +1 например - это будут абсолютные координаты.
for (int i = 500; i < 1500; i++)
{
Sleep(20);
SetCursorPos(i, 200);
}
Если вы попробуете переместить курсор влево - у вас ничего не получится, он продолжит двигаться вправо (это абсолютное перемещение). А вот если бы перемещение было относительным вы бы смогли дёрнуть мышку влево и тогда курсор начал бы перемещаться от 0 до ~1000 координаты (ось Y тоже изменила бы значение)! Вот мой пример, почему очень важно относительное перемещение: https://www.youtube.com/watch?v=fcWaSM8Sl4c Другой вариант, где видно курсор: https://www.youtube.com/watch?v=PJ9L2y-D9vM Даже если вы покажите, как считать текущее положение курсора - буду крайне признателен. C++ Visual Studio 2022.
Ответы (1 шт):
Вынес это в отдельную функцию:
int MOVER(int X, int Y)
{
INPUT Inputs;
Inputs.type = INPUT_MOUSE;
Inputs.mi.dx = X;
Inputs.mi.dy = Y;
Inputs.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &Inputs, sizeof(INPUT));
ZeroMemory(&Inputs, sizeof(INPUT));
return 0;
}
Например: если нужно переместить мышку с X1: 100 и Y1: 50 на X2: 50 и Y2: 50, тогда необходимо передать функции значение X: -50 и Y: 0 Это работает в 3D играх!
Примечание: чтобы функция перемещала на точное значение как у меня на -50, а не на -56 и т.д. нужно отключить в параметрах windows ускорение мыши.