winapi mouse_event错误的坐标

时间:2016-03-22 19:53:35

标签: c++ winapi mouseevent

我尝试制作一个autoClicker,用于记录我放置鼠标的位置,然后单击完全协调但最后点击鼠标最后一个点的相同点击次数。

const int WAIT_INTERVAL = 5;
const int CLICK_POINTS = 5;
POINT mouse[CLICK_POINTS];
int clicks;
bool didGetPos;

for (int i = 1; i <= CLICK_POINTS; i++)
    {
        cout << i << " spot" << endl;
        Sleep(3000);
        didGetPos = GetCursorPos(&mouse[i - 1]);

        if (!didGetPos)
        {
            break;
        }
    }

    if (didGetPos)
    {
        for (int i = 0; i < CLICK_POINTS; i++)
        {
            for (int j = 0; j < clicks; j++)
            {
                mouse_event(MOUSEEVENTF_LEFTDOWN, mouse[i].x, mouse[i].y, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, mouse[i].x, mouse[i].y, 0, 0);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您未包含MOUSEEVENTF_ABSOLUTE标记。 documentation说:

  

dx和dy参数包含标准化的绝对坐标。如果未设置,则这些参数包含相对数据:自上次报告位置以来的位置变化。无论何种类型的鼠标或类似鼠标的设备(如果有)连接到系统,都可以设置或不设置此标志。

您正在传递绝对坐标,因此需要包含MOUSEEVENTF_ABSOLUTE标记。

当然你应该注意文档并停止使用这个被取代的功能。使用SendInput