【问题标题】:Send mouse Click message [closed]发送鼠标点击消息[关闭]
【发布时间】:2012-09-04 00:00:04
【问题描述】:

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

【问题讨论】:

    标签: c++ visual-c++


    【解决方案1】:

    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”标志告诉程序要做的事情。如果不使用标志,则单击将在鼠标的当前位置进行。

    【讨论】:

    • 我使用了 PostMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(p.x, p.y)); PostMessage(hwnd,WM_LBUTTONUP,MK_LBUTTON,MAKELPARAM(p.x, p.y));但它点击鼠标所在的位置它没有点击我告诉点击的位置
    • 你所说的关于我看到的输入的链接,但我找不到如何说点击特殊位置
    • mouse_event(MOUSEEVENTF_LEFTDOWN,813,731, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP,813,731, 0, 0);它点击了鼠标没有点击的地方 (813,731)
    • @ZiDoM : mouse_event() 方法已弃用。你应该避免使用它。您是否按照 INPUT 结构和 MOUSEINPUT 结构的链接进行操作?恐怕您将不得不在我发布链接的页面上进行挖掘和阅读。尝试,你会成功:)
    • postmessage 处理 1 条消息。该位置用于移动消息,鼠标向下,然后鼠标向上。点击指定点需要 3 条消息。
    【解决方案2】:

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

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

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

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

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

    同时检查this问题,接受的答案非常详细。

    【讨论】:

    • 还要注意直接发送消息是不可靠的。
    • 如何在不移动鼠标的情况下通过 INPUT 结构判断位置
    • @ZiDoM,好吧,你可能知道你想点击哪里,不是吗?
    • 我知道位置,但我不想把鼠标移到那里点击
    • @Zidom,鼠标移动和鼠标点击是独立的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多