在Server 2008(不是R2)上運行時,我們發現應用程序中存在不良行爲。這是一個WinForms應用程序,無論鼠標在屏幕上的何處,Control.MousePosition都會返回{0,0} ... Control.MousePosition只是對Win32 api GetCursorPos()進行P/Invoke調用。什麼使GetCursorPos返回不正確的座標{0,0}?
跟帖:
我使用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我們的整個過程。我懷疑這個代碼,但是跟蹤語句表明我們正在清理乾淨的工作。
我還應該找什麼?
謝謝, 戴夫
您是否檢查GetCursorPos的返回值,它可能失敗?你可以分享P/Invoke聲明,也許這裏有錯誤。 – 2010-04-15 18:45:49
如果'GetCursorPos()'返回'false'並查看錯誤是什麼,調用'GetLastError()'。 – 2010-04-15 18:57:54