如何知道鼠标光标是否在桌面屏幕上

本文关键字:桌面 屏幕 是否 何知道 鼠标 光标 | 更新日期: 2023-09-27 18:26:40

我正在尝试获取鼠标光标是否在桌面屏幕上。这是我的代码:

    [DllImport("user32.dll")]
    public static extern bool GetCursorPos(out Point lpPoint);
    [DllImport("user32.dll")]
    public static extern IntPtr WindowFromPoint(Point Point);
    [DllImport("user32.dll", SetLastError = false)]
    public static extern IntPtr GetDesktopWindow();
    public static bool IsMouseOverDesktop()
    {
        Point mouseCursor;
        GetCursorPos(out mouseCursor);
        return WindowFromPoint(mouseCursor) == GetDesktopWindow();
    }

但它不起作用。当鼠标光标位于桌面上时,WindowFromPoint和GetDesktopWindow会返回不同的值。

如何知道鼠标光标是否在桌面屏幕上

现在,根据我的想法,您可以解决以下问题:

在表单代码中使用此方法。

public bool IsMouseOverDesktop()
{
 bool IsMouseOverDesktop = false;
 if ((Cursor.Position.X > this.Location.X) && ((Cursor.Position.X - this.Location.X) < this.Width) && (Cursor.Position.Y > this.Location.Y) && ((Cursor.Position.Y - this.Location.Y) < this.Height))
  IsMouseOverDesktop = false;
 else
  IsMouseOverDesktop = true;
 return IsMouseOverDesktop;
}

然后在事件中调用此方法,并检查鼠标是否在桌面上。