【问题标题】:Why user32.dll mouse_event method doesn't perform mouse down event?为什么 user32.dll mouse_event 方法不执行鼠标按下事件?
【发布时间】:2019-08-18 06:36:10
【问题描述】:

我正在设置一个简单的 C# 应用程序,它将窗口设置为前台并在循环中执行点击。

(几年前我在 Windows 7 上编写了相同的程序。当时一切都运行良好。) 我现在正在使用 Windows 10。

    private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
    private const int MOUSEEVENTF_LEFTUP = 0x0004;
    private const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
    private const int MOUSEEVENTF_RIGHTUP = 0x0010;

    public void DoMouseClick()
    {
        int X = Cursor.Position.X;
        int Y = Cursor.Position.Y;

        mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
        Thread.Sleep(150);
        mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
    }

除了第一部分是 MOUSEEVENTF_LEFTDOWN 之外,一切似乎都有效。 如果我手动按住左键,我可以看到程序在下一步释放它,即 MOUSEEVENTF_LEFTUP。

我怎样才能让鼠标按下也有效果?

【问题讨论】:

    标签: c# click user32 mousedown mouseup


    【解决方案1】:

    我认为你做 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) 并使用 SetCursorPos(int x, int y) 其中 x 是 Cursor.Position.X 和 y Cursor.Position.Y

    int X = Cursor.Position.X;
    int Y = Cursor.Position.Y;
    SetCursorPos(X, Y);
    
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    Thread.Sleep(150);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    

    这对我有用。

    【讨论】:

      【解决方案2】:

      Windows 10 有错误,无法在某些软件上运行MOUSEEVENTF_LEFTDOWN

      【讨论】:

        猜你喜欢
        • 2012-02-01
        • 2012-02-03
        • 1970-01-01
        • 2019-09-01
        • 2020-07-27
        • 2013-05-18
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多