c# - 如何知道鼠标光标是否在桌面屏幕上?

标签 c# .net

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

    [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;
}

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

关于c# - 如何知道鼠标光标是否在桌面屏幕上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26384965/

相关文章:

c# - 如何关闭浏览器信息栏?

c# - 将标题附加到文本文件

c# - 检查 ListView 中复选框的值

c# - .NET WPF 记住 session 之间的窗口大小

c# - 相关链接自动获得 session ID

c# - 动态 Excel 电子表格

c# - 如何使用 linq 从列表中查找具有相同项目的最后一项

c# - 如何使用关闭方法正确实现处置模式 (CA1063)

c# - 更改默认图标

c# - 检索 X509Certificate2 对象的颁发者