C++ 发送鼠标单击消息

C++ 发送鼠标单击消息,c++,visual-c++,C++,Visual C++,如何使用C++在windows API中的SendInput函数让您开始学习如何在不移动鼠标的情况下(我的意思是让计算机认为鼠标点击了某个位置)使鼠标点击事件发生在某个位置。有关方法的定义、输入参数和返回值,请查看以下链接: 您可以按照页面中的链接了解有关函数中使用的结构和数据类型的更多信息 更新: 您可以从以下内容开始 #include<Windows.h> int main() { INPUT input; input.type=INPUT_MOUSE;

如何使用C++

在windows API中的
SendInput
函数让您开始学习如何在不移动鼠标的情况下(我的意思是让计算机认为鼠标点击了某个位置)使鼠标点击事件发生在某个位置。有关方法的定义、输入参数和返回值,请查看以下链接:

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

更新: 您可以从以下内容开始

#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;
}
#包括
int main()
{
输入;
input.type=input\u鼠标;
input.mi.dx=0;
input.mi.dy=0;
input.mi.dwFlags=(MOUSEEVENTF_绝对| MOUSEEVENTF_移动| MOUSEEVENTF_右下| MOUSEEVENTF_右上);
input.mi.mouseData=0;
input.mi.dwExtraInfo=NULL;
input.mi.time=0;
SendInput(1,&input,sizeof(input));
返回0;
}

这将自动将鼠标移动到屏幕的左上角并右键单击。现在,如果您想在屏幕上的某个位置单击而不移动鼠标,我认为使用SendInput()是不可能的。您不必担心移动鼠标,因为您的程序将自行完成。这就是“MOUSEEVENTF_MOVE”标志告诉程序要做的事情。如果不使用该标志,则单击将在鼠标的当前位置发生。

您可以使用
SendInput()
模拟鼠标单击和键盘笔划:

SendInput函数在输入结构中插入事件 串行输入到键盘或鼠标输入流中。这些事件并非如此 插入其他键盘或鼠标输入事件 由用户(使用键盘或鼠标)或通过调用keybd_事件, 鼠标事件,或对SendInput的其他调用

您还可以使用
SendMessage()
PostMessage()
发送按钮按下消息,例如:

SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(mousePosX, mousePosY));
,但可靠性较低。请注意,通过这种方式,您可能还需要稍后发送
WM_LBUTTONUP
,具体取决于您在应用程序中处理事件的方式


另外,请检查问题,接受的答案非常详细。

还请注意,直接发送消息是不可靠的。我应该如何在不移动输入结构的情况下说出位置mouse@ZiDoM,嗯,你可能知道你想点击哪里,不是吗?我知道位置,但我不想在那里移动鼠标clicking@Zidom,鼠标移动和鼠标点击是独立的;PostMessage(hwnd、WM_LBUTTONUP、MK_LBUTTON、MAKELPARAM(p.x、p.y));但是它点击鼠标所在的位置,它没有点击我告诉它的位置,点击你说的关于我看到的输入的链接,但我找不到如何在特殊位置点击鼠标事件(MOUSEEVENTF_LEFTDOWN,813731,0,0);鼠标事件(MOUSEEVENTF_LEFTUP,813731,0,0);它单击鼠标所在的位置,但不单击(813731)@ZiDoM:
mouse\u event()
方法已被弃用。你应该避免使用它。您是否遵循了输入结构和鼠标输入结构的链接?我担心你将不得不在我发布的链接页面上进行挖掘和阅读。试试看,您会成功:)postmessage处理其中一条消息。该位置用于移动消息,先向下移动鼠标,然后向上移动鼠标。在指定点单击需要3条消息。