为什么user32.dll mouse_event方法不执行鼠标按下事件?

问题描述 投票:0回答:1

我正在设置一个简单的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个回答
0
投票

我认为你做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);

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.