我已编写了一个c ++代码片段来模拟鼠标点击,如下所示。
INPUT mouseData[2];
ZeroMemory(mouseData, sizeof(mouseData));
mouseData[0].type = INPUT_MOUSE;
mouseData[0].mi.dx = xx;
mouseData[0].mi.dy = yy;
mouseData[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
mouseData[0].mi.mouseData = 0;
mouseData[0].mi.time = 0;
mouseData[1].type = INPUT_MOUSE;
mouseData[1].mi.dx = 10;
mouseData[1].mi.dy = 10;
mouseData[1].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
mouseData[1].mi.mouseData = 0;
mouseData[1].mi.time = 0;
SendInput(1, &mouseData[0], sizeof(INPUT));
Sleep(30);
SendInput(1, &mouseData[1], sizeof(INPUT));
但它并没有奏效。 前SendInput有效,但后一个SendInput不起作用。 为什么呢?
另一个:我已尝试过SendInput,如下所示
以上效果很好。 但如果没有2,它就无法运作。为什么呢?
答案 0 :(得分:2)
MSDN在its description有效标志
中没有超级帮助此成员中的位可以是以下值的任何合理组合。
我个人不会说在同一输入命令中同时使用向下和向上标志是合理的。为了最大限度地兼容所有应用程序,请像普通用户一样执行操作:移动,按下按钮,最后按下按钮。
我建议您创建一个辅助函数,如果要进行大量鼠标操作,则执行这三个输入步骤。