我尝试制作一个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);
}
}
}
答案 0 :(得分:1)
您未包含MOUSEEVENTF_ABSOLUTE
标记。 documentation说:
dx和dy参数包含标准化的绝对坐标。如果未设置,则这些参数包含相对数据:自上次报告位置以来的位置变化。无论何种类型的鼠标或类似鼠标的设备(如果有)连接到系统,都可以设置或不设置此标志。
您正在传递绝对坐标,因此需要包含MOUSEEVENTF_ABSOLUTE
标记。
当然你应该注意文档并停止使用这个被取代的功能。使用SendInput
。