我一直在尝试模拟一系列输入到一个进程中。 唯一我无法实现的是鼠标移动。 我在网上找到了最接近的解决方案:
bool mouse_move(int x, int y)
{
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.time = 0;
input.mi.dx = x*(65536/GetSystemMetrics(SM_CXSCREEN));//x being coord in pixels
input.mi.dy = y*(65536/GetSystemMetrics(SM_CYSCREEN));//y being coord in pixels
input.mi.dwFlags = MOUSEEVENTF_MOVE;//MOUSEEVENTF_ABSOLUTE
SendInput(1, &input, sizeof(input));
return true;
}
我不太理解网上的结构体的解释。 无论我输入什么值(除了0),鼠标都会跑到屏幕右下角。
通过SetCursorPos()
是可以实现的,但一旦进入进程,该函数就不再起作用了。
我需要模拟用户输入鼠标移动,到目前为止SendInput()
已经起作用了。只是我似乎无法弄清位置。