鼠标实际点击、SendInput模仿鼠标点击,这2者有什么区别?
我编写了如下代码试图模仿鼠标移动到指定位置并右键单击,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]));