如何用C++模拟鼠标点击?

人气:328 发布:2022-10-16 标签: winapi c++ simulate sendinput

问题描述

我需要模拟在应用程序窗口上单击鼠标。我正在使用Windows。

如何将鼠标左键单击发送到窗口所在的坐标屏幕x, y

推荐答案

使用SendInput()函数:

INPUT Inputs[3] = {0};

Inputs[0].type = INPUT_MOUSE;
Inputs[0].mi.dx = ...; // desired X coordinate
Inputs[0].mi.dy = ...; // desired Y coordinate
Inputs[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;

Inputs[1].type = INPUT_MOUSE;
Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;

Inputs[2].type = INPUT_MOUSE;
Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;

SendInput(3, Inputs, sizeof(INPUT));

请务必阅读MOUSEINPUT documentation中有关在多显示器环境中使用MOUSEEVENTF_ABSOLUTE时如何正确指定dxdy的备注。

116