发送鼠标单击消息

Send mouse Click message

本文关键字:消息 单击 鼠标      更新时间:2023-10-16

如何用C++在不移动鼠标的情况下(我的意思是让计算机认为某个位置是用鼠标点击的)在某个位置发生鼠标点击事件

windows API中的SendInput函数将帮助您入门。请查看以下链接,了解该方法的定义、输入参数和返回值:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx

您可以按照页面中的链接了解有关函数中使用的结构和数据类型的更多信息。

更新:你可以从这样的东西开始

#include<Windows.h>
int main()
{
    INPUT input;
    input.type=INPUT_MOUSE;
    input.mi.dx=0;
    input.mi.dy=0;
    input.mi.dwFlags=(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE|MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP);
    input.mi.mouseData=0;
    input.mi.dwExtraInfo=NULL;
    input.mi.time=0;
    SendInput(1,&input,sizeof(INPUT));
    return 0;
}

这将自动将鼠标移动到屏幕的左上角并右键单击。现在,如果你想在不移动鼠标的情况下点击屏幕上的某个地方,我认为使用SendInput()是不可能的。你不需要担心移动鼠标,因为你的程序会自己做。这就是"MOUSEEVENTF_MOVE"标志告诉程序要做的事情。如果不使用该标志,则单击将发生在鼠标的当前位置。

您可以使用SendInput()函数来模拟鼠标点击和键盘敲击:

SendInput函数在INPUT结构中插入事件串行地输入到键盘或鼠标输入流中。这些事件不是插入其他键盘或鼠标输入事件通过用户(使用键盘或鼠标)或通过对keybd_event的调用,mouse_event或对SendInput的其他调用。

您也可以使用SendMessage()PostMessage()发送按键信息,例如

SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(mousePosX, mousePosY));

,但可靠性较差。请注意,通过这种方式,您可能还需要稍后发送WM_LBUTTONUP,具体取决于您在应用程序中处理事件的方式。

还要检查这个问题,公认的答案非常详细。