当我告诉它时,为什么鼠标没有点击?

Lia*_*roy 0 c# mouse winapi emulation cursor

我正在使用以下代码如何在C#中模拟鼠标单击?我发现它不起作用.这是代码:

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);

    private const int MOUSEEVENTF_LEFTDOWN = 0x02;
    private const int MOUSEEVENTF_LEFTUP = 0x04;
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
    private const int MOUSEEVENTF_RIGHTUP = 0x10;

    public void DoMouseClick()
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 882, 554, 0, 0);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DoMouseClick();
    }
Run Code Online (Sandbox Code Playgroud)

我也曾尝试更换mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENT_LEFTUP...mouse_event(MOUSEEVENTF_LEFTDOWN & MOUSEEVENT_LEFTUP...,但仍然没有运气.其他人已经成功了...为什么我不呢?

Han*_*ant 5

您不应该使用mouse_event(),它已被SendInput()取代.

有一个很好的理由,mouse_event()的返回类型是无效的.Windows没有任何方法可以告诉您,您做错了.SendInput返回UINT并通过返回0并通过GetLastError公开错误代码来报告错误.

你肯定做错了.发送同时上下按钮的鼠标事件没有意义.你需要打两次电话; 首先是下一个.

  • 谷歌有44,500次点击"c#sendinput",不要无奈. (5认同)