Simuler un clic

Signaler
Messages postés
3
Date d'inscription
mercredi 14 juillet 2004
Statut
Membre
Dernière intervention
10 septembre 2004
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour à tous,

Je dois depuis un prog en VB simuler le clic sur le bouton gauche de la souris, mais il y a un problème, le logiciel auquel je dois faire croire que la souris a été cliquée utilise son propre pilote de souris. De ce fait, les commandes disponibles en VB ne fonctionnent pas.

Je me suis donc dis que le passage par une routine assembleur qui agirait au niveau le plus "bas" pourrait résoudre ce problème.

Seulement voilà, je n'y connais rien (en assembleur :) )...

Si qlq1 lis ce message et peut m'aider, je lui en serais reconnaissant.

D'avance merci.

Oswalde
http://www.ordredelalicorne.net

5 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Pas une question de langage, en mode protege c'est le systeme qui cree et/ou propage un evenement.
Regarde SendInput() dans MSDN. A noter que le prog cible peut analyser l'etat injecte ou non de l'evenement et donc ne pas vouloir reagir en pareil cas.
Si tu dois simuler un clic sur bouton ouchose de ce genre tu peux directement inserer l'event dans la pile du prog par PostMessage(), ce sera plus sur d'arriver.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
3
Date d'inscription
mercredi 14 juillet 2004
Statut
Membre
Dernière intervention
10 septembre 2004

Merci pour ces suggestions. J'ai essayé d'utiliser SendInput() mais comme près-senti, cela ne fonctionne pas :sad) .
Je vais essayer de me pencher sur l'autre instruction proposée mais là cela me semble tres compliqué, je n'ai pas trouvé d'info sur la structure de cette commande (mais je cherche :) )

Merci de ces propositions...

PS : Si qlq1 connait la façon d'utiliser PostMessage() pour demander un clic gauche, je suis intéressé par un exemple.

D'avance merci.

Oswalde
http://www.ordredelalicorne.net
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
WM_LBUTTONDOWN a mettre comme second param.
MSDN te decrira les 2 autres.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
3
Date d'inscription
mercredi 14 juillet 2004
Statut
Membre
Dernière intervention
10 septembre 2004

Bon là y a qlq chose qui m'echappe :question) ...

Si j'ai bien compris, PostMessage() attend 4 parametres :
- Un identificateur de fenêtre
- Un message
- Un premier parametre
- Un deuxieme parametre

- L'identificateur de fenetre, je le trouve avec la fonction FindWindow() qui envoie 2 parametres (des chaînes de caractères), la première vide, la deuxième contient le non de la fenetre dont je veux connaitre l'identifiant.
EX : hWnd = FindWindow(vbNullString, "Non de la fenetre")

Jusque là ça va :)

A partir de maintenant ça va plus :sad)

- Le deuxieme parametre (le message) c'est une valeur numérique, format long.
En cherchant sur le net, j'ai trouver qu'il falait charger la valeur hexa &h201 comme message pour un clic gauche. Mais je n'en suis pas sur

- Le troisieme et Quatrieme parametre j'ai pas trouvé leur signification et ej les ais laissé à 0...

Donc j'envois PostMessage(indentificateur de fenetre, &h201, 0, 0) -> et bien évidement ca marche pas :sad)

Y a t'il qlq chose que je fais mal ou que je ne fais pas et qu'il faut faire ?

Svp docteur une idée ?

Oswalde
http://www.ordredelalicorne.net
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
WM_LBUTTONDOWN = 0x201
MK_LBUTTON = 0x1 pour wParam
lParam doit contenir coordonnees souris CLIENT !!! et non screen.

Ce n'est pas nimporte ou qu'il faut regarder sur le net mais sur MSDN:
http://www.msdn.microsoft.com/library/default.asp
et tu mets WM_LBUTTONDOWN en zone de recherche.

ciao...
BruNews, Admin CS, MVP VC++