Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道鼠标光标是否在桌面屏幕上?_C#_.net - Fatal编程技术网

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

C# 如何知道鼠标光标是否在桌面屏幕上?,c#,.net,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", SetLas

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

    [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;
}
public bool IsMouseOverDesktop()
{
bool IsMouseOverDesktop=false;
如果((Cursor.Position.X>this.Location.X)&((Cursor.Position.X-this.Location.X)this.Location.Y)&((Cursor.Position.Y-this.Location.Y)

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

桌面窗口可能与您想象的不同。桌面窗口是最上面的窗口。它不是explorer创建的窗口,也不是包含图标的窗口,我猜这是您试图确定鼠标是否在上方的实际窗口。也许这会有所帮助:我认为说它是最上面的窗口是不正确的(尽管我可能错了)。更准确地说,它是所有窗口的父窗口。我建议您打开spy++并找出WindowFromPoint为您提供的窗口,然后从那里开始。