0

我正在使用如何在 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();
    }

我也尝试过替换mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENT_LEFTUP...mouse_event(MOUSEEVENTF_LEFTDOWN & MOUSEEVENT_LEFTUP...但仍然没有运气。其他人已经成功了......为什么我没有?

4

1 回答 1

5

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

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

你肯定做错了。发送同时向上和向下按钮的鼠标事件没有意义。你需要调用它两次;先下,后上。

于 2012-07-13T19:46:18.757 回答