Мы видим плохое поведение в приложении, когда оно работает на Server 2008 (не R2). Это приложение WinForms, и Control.MousePosition возвращает {0,0} независимо от того, где находится мышь на экране ... Control.MousePosition просто вызывает P / Invoke вызов Win32 api GetCursorPos ().
Followup:
Я использую Control.MousePosition из WinForms, который вызывает 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_CALLWNDPROCRET для всего нашего процесса. Я с подозрением отношусь к этому коду, но операторы трассировки показывают, что мы аккуратно получаем + из этого хука.
Что еще мне нужно искать?
Спасибо,
Dave