我正在尝试获取鼠标光标是否在桌面屏幕上。这是我的代码:
[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/