【问题标题】:cpp simulating mouseclick also moves the cursorcpp 模拟 mouseclick 也会移动光标
【发布时间】:2020-06-30 21:10:30
【问题描述】:

我有以下 cpp 脚本:

INPUT Inputs[3] = { 0 };

Inputs[0].type = INPUT_MOUSE;
Inputs[0].mi.dx = 0; 
Inputs[0].mi.dy = 0; 
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));

它应该模拟鼠标按下,它可以工作,但它也总是将光标移动到特定位置,即使我没有这个

Inputs[0].mi.dx = 0; 
Inputs[0].mi.dy = 0;

部分。我希望它只是单击而不是移动光标

【问题讨论】:

  • 您使用的是什么操作系统?你用的是什么框架?更多标签会引起关注。
  • 发布一个最小的可重现代码将为您提供帮助,而不仅仅是眼睛。
  • 如果您不想移动光标,为什么还要输入第一个MOUSEEVENTF_MOVE
  • 如果你想点击一个按钮,但不移动鼠标光标,你可以考虑向你想点击的控件发送一条windows消息,而不是模拟输入。
  • 如果不想移动光标,就不要指定MOUSEEVENTF_MOVE,就这么简单。

标签: windows winapi input simulate


【解决方案1】:

鼠标光标移动是因为您通过在第一个INPUT 结构中设置MOUSEEVENTF_MOVE 标志来请求鼠标光标移动。

如果您不希望鼠标移动,请删除整个第一个 INPUT 结构。另一方面,如果您想注入鼠标移动事件,但实际上并不移动鼠标,请移除 MOUSEEVENTF_ABSOLUTE 标志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多