【发布时间】:2019-09-01 10:16:17
【问题描述】:
我正在使用 user32.dll 获取光标位置和模拟鼠标点击等。我在 WPF 应用程序中使用 MouseLeave 事件。但我想从所有窗口(不是仅在我的 WPF 应用程序中)。是否可以使用 user32.dll 或其他东西来捕捉这个事件?
【问题讨论】:
标签: c# mouseevent user32
我正在使用 user32.dll 获取光标位置和模拟鼠标点击等。我在 WPF 应用程序中使用 MouseLeave 事件。但我想从所有窗口(不是仅在我的 WPF 应用程序中)。是否可以使用 user32.dll 或其他东西来捕捉这个事件?
【问题讨论】:
标签: c# mouseevent user32
我是这样做的
[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);
}
}));
}
【讨论】:
有一个 Windows API 调用允许获取鼠标事件,即使它们不在窗口中:
SetCapture(hWnd)
您可以将其与调用相结合:
WindowFromPoint()
获取鼠标在哪个窗口上
【讨论】: