Pb utilisation "PostMessage" pour simuler click souris
Lustuc
Messages postés30Date d'inscriptionlundi 18 août 2008StatutMembreDernière intervention20 octobre 2009
-
28 août 2009 à 12:05
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 2013
-
28 août 2009 à 17:32
Je cherche à faire un petit programme en C permétant de cliquer sur des applications qui ne sont pas forcément en premier plan.
J'ai le handle de la fenetre sur laquelle je veux cliquer et la position (en pixel) du click dans la fenetre.
J'ai testé les fonctions suivantes (x et y étant les coordonnées du click):
Pour en enfoncer le bouton gauche de la souris :
PostMessage(handle, WM_LBUTTONDOWN, 0, MAKELPARAM(x,y));
ou PostMessage(handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x,y));
Pour lacher le bouton gauche de la souris :
PostMessage(handle, WM_LBUTTONUP, 0, MAKELPARAM(x,y));
et .... rien !
ça compile bien, ça ce lance bien, mais ça ne fait rien, mais rien de chez rien !
fregolo52
Messages postés1114Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 28 août 2009 à 14:08
Je ne sais pas trop, mais tu connais le hwnd, donc tu dois pouvoir retrouver la position de la fenêtre. Regarde du côté de mouse_event (mais ça fait peut-être déplacer le curseur).
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 28 août 2009 à 17:31
Bonjour,
Attention à qui tu envoies les messages, pour cliquer sur un bouton il faut envoyer WM_LBUTTONDOWN et WM_LBUTTONUP au bouton lui-même et pas à sa fenêtre parent, en coordonnées X,Y, prends 1,1. Tu trouveras facilement l'identifiant du bouton avac Spy++.
Tu peux aussi simuler un click en envoyant un WM_COMMAND à la fenêtre avec l'identifiant du bouton, c'est plus simple. Ceci à condition que le bouton soit un vrai bouton, j'ai déjà vu des applications dont les boutons n'envoyaient pas de WM_COMMAND après un click.