作为 cmets,您需要添加其他标志:MOUSEEVENTF_ABSOLUTE,以及另一个标志:MOUSEEVENTF_MOVE。并且您需要将坐标转换为 0 到 65,535 之间的归一化绝对坐标
int x = 1555;
int y = 193;
DWORD fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;
DWORD fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;
DWORD dx = MulDiv(x,65535,fScreenWidth);
DWORD dy = MulDiv(y,65535,fScreenHeight);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_MOVE| MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE| MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_MOVE| MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE| MOUSEEVENTF_ABSOLUTE, dx, dy, 0, 0);
另外,mouse_event:
此功能已被取代。请改用SendInput。
int x = 1555;
int y = 193;
DWORD fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;
DWORD fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;
DWORD dx = MulDiv(x, 65535, fScreenWidth);
DWORD dy = MulDiv(y, 65535, fScreenHeight);
INPUT input[4] = { 0 };
input[0].type = input[1].type = input[2].type = input[3].type = INPUT_MOUSE;
input[0].mi.dx = input[1].mi.dx = input[2].mi.dx = input[3].mi.dx = dx;
input[0].mi.dy = input[1].mi.dy = input[2].mi.dy = input[3].mi.dy = dy;
input[0].mi.dwFlags= input[2].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN| MOUSEEVENTF_MOVE;
input[1].mi.dwFlags = input[3].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP| MOUSEEVENTF_MOVE;
SendInput(4,input,sizeof(INPUT));