win32: simuler un clic, sans simuler le mouvement de la souris?
Je suis en train de simuler un clic de souris sur une fenêtre. J'ai actuellement succès à faire ce qui suit (je suis à l'aide de Python, mais il devrait s'appliquer à général win32):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
Cela fonctionne bien. Toutefois, si le clic qui se passe pendant que je suis en déplaçant la souris à la main, la position du curseur obtient jeté hors tension. Est-il possible d'envoyer un clic directement à un (x,y)
coordonner sans bouger la souris? J'ai essayé quelque chose comme ce qui suit avec pas beaucoup de chance:
nx = x*65535/win32api.GetSystemMetrics(0)
ny = y*65535/win32api.GetSystemMetrics(1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | \
win32con.MOUSEEVENTF_ABSOLUTE,nx,ny)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | \
win32con.MOUSEEVENTF_ABSOLUTE,nx,ny)
OriginalL'auteur Claudiu | 2010-09-15
Vous devez vous connecter pour publier un commentaire.
Essayer de WindowFromPoint() fonction:
(x - left, y - top)
, où j'ai obtenuleft
ettop
deGetWindowRect
n'ai pas cliqué au bon endroit.Ah, vraiment. Vous avez besoin de convertir un absolu sur position dans le relatif. Utilisation ScreenToClient(hWnd, lpPoint) avant PostMessage
ah ty, je vais essayer ça! est-il une diff entre postmessage et sendmessage dans ce cas?
Je pense qu'il n'y a pas de différence entre postmessage et sendmessage dans ce cas.
Hey, où est
MAKELPARAM
venir?OriginalL'auteur Andrew
Cela ne veut pas répondre à la question, mais il n'a résoudre mon problème:
Le résultat est que tous les mouvements que je fais n'interfère pas avec le clic. L'inconvénient, c'est que mon mouvement réel sera foiré, donc je suis toujours ouvert aux suggestions.
OriginalL'auteur Claudiu