首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SendInput不连续工作

SendInput不连续工作
EN

Stack Overflow用户
提问于 2017-04-22 16:55:45
回答 1查看 696关注 0票数 0

我编写了一个c++片段来模拟鼠标点击,如下所示。

代码语言:javascript
复制
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,如下所示

  1. 鼠标点击调用SendInput
  2. 在屏幕的任何位置上手动单击鼠标。
  3. 调用SendInput

上面的效果很好。但如果没有2,它就不起作用。为什么?

EN

回答 1

Stack Overflow用户

发布于 2017-04-22 18:46:29

在有效标志的其描述中,MSDN不是超级有用的。

该成员中的位可以是以下值的任何合理组合。

我个人不认为在同一个输入命令中同时使用down和up标志是合理的。为了实现与所有应用程序的最大兼容性,可以像普通用户那样执行操作:移动、向下按钮,最后按下按钮。

如果要执行大量鼠标操作,我建议您创建一个执行这三个输入步骤的助手函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43561997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档