Nous observons un comportement incorrect dans une application lorsqu'elle est exécutée sur Server 2008 (et non R2). C'est une application WinForms, et Control.MousePosition retourne {0,0} peu importe où la souris est sur l'écran ... Control.MousePosition fait juste un appel P/Invoke à Win32 api GetCursorPos().Qu'est-ce qui pourrait faire que GetCursorPos renvoie des coordonnées incorrectes de {0,0}?
Followup:
Je me sers de Control.MousePosition WinForms, qui appelle GetCursorPos, et je peux voir qu'il ne tient pas compte certainement la valeur de retour. En posant ma question d'une autre manière, "Qu'est-ce qui fait que GetCursorPos() peut soudainement commencer à retourner FALSE, alors qu'il ne fonctionnait que quelques millisecondes auparavant dans le même processus?"
// From .NET Reflector....
public static Point get_MousePosition()
{
NativeMethods.POINT pt = new NativeMethods.POINT();
UnsafeNativeMethods.GetCursorPos(pt);
return new Point(pt.x, pt.y);
}
Il y a un contrôle dans notre bibliothèque qui appelle SetWindowsHookEx à accrocher WH_CALLWNDPROCRET pour notre ensemble du processus. Je me méfie de ce code, mais les instructions de traçage montrent que nous obtenons plus de ce hook proprement.
Que dois-je rechercher d'autre?
Merci, Dave
Vérifiez-vous la valeur de retour de GetCursorPos, est-ce que cela échoue? Et pouvez-vous partager la déclaration P/Invoke, peut-être qu'il y a quelque chose qui ne va pas. –
Appelez 'GetLastError()' si 'GetCursorPos()' renvoie 'false' et voit quelle est l'erreur. –