如何使用user32.dll捕获鼠标离开事件

时间:2019-04-10 21:03:21

标签: c# mouseevent user32

我正在使用user32.dll获取光标位置并模拟鼠标单击等。我在WPF应用程序中使用MouseLeave事件。但是我想从所有窗口捕获鼠标离开(或鼠标悬停)事件(不是仅在我的WPF应用中)。是否可以使用user32.dll或其他方式捕获此事件?

2 个答案:

答案 0 :(得分:1)

我是这样做的

[DllImport("user32.dll")]
    static extern bool GetCursorPos(out Point lpPoint);

    void StartGettingCursorPos()
    {
        Task.Run(new Action(() =>
        {
            while (true)
            {
                GetCursorPos(out Point point);
                Console.WriteLine($"X:{point.X}; Y:{point.Y}");
                Thread.Sleep(20);
            }
        }));
    }

答案 1 :(得分:0)

有一个Windows API调用,即使它们不在窗口中也可以获取鼠标事件:

SetCapture(hWnd)

您可以将其与以下调用结合使用:

WindowFromPoint()

获取鼠标悬停在哪个窗口上