我正在使用user32.dll函数GetCursorPos来获取光标的SCREEN坐标。我需要知道光标是否在屏幕顶部(包括多个监视器设置)。
但是,当我尝试测试GetCursorPos给我的Y坐标时,即使我将光标移动到两个屏幕的所有屏幕边框上,我的坐标都不会小于250左右。
我以为我的主屏幕的左上角是[0,0],并且当我在屏幕上越低,Y就会增长,为什么它以这么高的数字开头?
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCursorPos(out POINT lpPoint);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
public POINT(int x, int y)
{
this.X = x;
this.Y = y;
}
}
private void Whatever() {
POINT lMousePosition;
GetCursorPos(out lMousePosition)
}
我希望函数的输出在某个地方的Y坐标中小于10,但不是。为什么?
编辑:
我找到了解决方案。该函数返回正确的值,但是我使用断点来查看所述值将断点更改为我想看到的值。
答案 0 :(得分:-1)
我编辑了问题,所以它也在那里...
问题是由断点引起的,该断点使函数的评估晚于我的预期,并在过程中移动了光标。因此,我在调试时看到的值当时是正确的值。