当应用程序在服务器2008(而不是R2)上运行时,我们看到了它的不良行为。这是一个winforms应用程序,control.mouseposition将返回{0,0}无论鼠标在屏幕上的哪个位置…control.mouseposition只是对win32 api getcursorpos()进行了一个p/invoke调用。
跟进:
我使用的是winforms中的control.mouseposition,它调用getcursorpos,我可以看到它确实忽略了返回值。以另一种方式询问我的问题:“当getCursorPos()在同一个进程中仅在几毫秒前工作时,是什么原因导致它突然开始返回false?”

// From .NET Reflector....
public static Point get_MousePosition()
{
    NativeMethods.POINT pt = new NativeMethods.POINT();
    UnsafeNativeMethods.GetCursorPos(pt);
    return new Point(pt.x, pt.y);
}

在我们的库中有一个控件调用setWindowsHookex来钩住整个过程中的wh_callWndProcket。我对这段代码表示怀疑,但跟踪语句表明我们正干净利落地从这个钩子里钻进去。
我还要找什么?
谢谢,
戴夫

最佳答案

事实证明,只有在64位服务器2008 R1上运行/largeaddressware 32位应用程序时,才会发生这种情况。

关于windows - 是什么会使GetCursorPos返回错误的{0,0}坐标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2648065/

10-12 21:06