鼠标实际点击、SendInput模仿鼠标点击,这2者有什么区别?

FredLee2004 2004-04-19 09:16:21
我编写了如下代码试图模仿鼠标移动到指定位置并右键单击,SendInput返回值告诉我3个动作都成功地插入鼠标事件序列,但是我只看到鼠标移动到了指定位置却没有发生右键单击事件。所以我想也许接受鼠标事件的窗口有鼠标事件检测代码,对于用SendInput产生的鼠标事件进行了某种识别处理。
我想请教的问题是:
1、是不是SendInput生成的鼠标事件与真实鼠标事件有什么区别?
2、是不是我的代码有编写错误?
3、或者是什么其他原因让鼠标右键单击没有发生?


INPUT MyMouseInput[3];
//第一个动作:鼠标移动到指定位置
MyMouseInput[0].type = INPUT_MOUSE;
MyMouseInput[0].mi.dx = (long)(OriginalX*65535/1023);
MyMouseInput[0].mi.dy = (long)(OriginalY*65535/767);
MyMouseInput[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE;
MyMouseInput[0].mi.mouseData = NULL;
MyMouseInput[0].mi.dwExtraInfo = NULL;
MyMouseInput[0].mi.time = NULL;
//第二个动作:鼠标右键按下
MyMouseInput[1].type = INPUT_MOUSE;
MyMouseInput[1].mi.dx = NULL;
MyMouseInput[1].mi.dy = NULL;
MyMouseInput[1].mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
MyMouseInput[1].mi.mouseData = NULL;
MyMouseInput[1].mi.dwExtraInfo = NULL;
MyMouseInput[1].mi.time = NULL;
//第三个动作:鼠标右键释放
MyMouseInput[1].type = INPUT_MOUSE;
MyMouseInput[1].mi.dx = NULL;
MyMouseInput[1].mi.dy = NULL;
MyMouseInput[1].mi.dwFlags = MOUSEEVENTF_RIGHTUP;
MyMouseInput[1].mi.mouseData = NULL;
MyMouseInput[1].mi.dwExtraInfo = NULL;
MyMouseInput[1].mi.time = NULL;
//发送鼠标动作到消息序列
int SuccessAction;
SuccessAction = SendInput(3,MyMouseInput,sizeof(MyMouseInput[0]));
...全文
825 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2004-04-19
  • 打赏
  • 举报
回复
呵呵。其实,我也没写过这种东西。更清楚的是没有。不过,先前别人问过一些手工写鼠标点击的东西,也有你这样的类似东西。我只是看了你的程序后,提的一些疑问,不一定正确的。你试试再说吧。
FredLee2004 2004-04-19
  • 打赏
  • 举报
回复
谢谢快乐鹦鹉。
后面2个不写坐标值,我以为既然没有鼠标移动,就不用坐标值了。

还有,你是不是可以说的更清楚一些?
快乐鹦鹉 2004-04-19
  • 打赏
  • 举报
回复
是不是太快了?应该有个延迟?为什么后面两个不写坐标值了?
FredLee2004 2004-04-19
  • 打赏
  • 举报
回复
唉,没人理睬,自己顶。。。。
niaosuy 2004-04-19
  • 打赏
  • 举报
回复
SendInput生成的鼠标事件与真实鼠标事件在软件上层看来没有什么区别.
只是底层没有接受到硬件中断.
niaosuy 2004-04-19
  • 打赏
  • 举报
回复
我做过同样东西.

速度太快了,要加延时!!!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧