[Win32] Capturer les mouvements de la souris

Capturer les mouvements de la souris [Win32] - C - Programmation

Marsh Posté le 03-11-2004 à 03:21:23    

Salut à tous.
 
Je fais une petite appli en C Win32, et j'ai besoin de capturer le mouvement de la souris, lorsque l'utilisateur maintien une touche appuyée (ctrl).
 
J'ai fouillé dans l'api, et je n'ai déniché que SetCapture qui permet de faire ce que je veux mais uniquement si on maintien le bouton gauche enfoncé en permanance, ce qui ne me convient qu'à moitié (c'est bizarre à l'utilisation).
 
J'ai également cherché du coté des hooks bas niveau mais je n'ai trouvé qu'une solution pour capturer les appuies sur les boutons mais pas le déplacement de la souris...
 
L'un d'entre-vous aurait-il déjà fait cela, à savoir, capturer les mvts de la souris, sans effectuer d'opérations supplémentaires, et quelque soit la position de la souris (dans/hors de la fenetre active) ?

Reply

Marsh Posté le 03-11-2004 à 03:21:23   

Reply

Marsh Posté le 03-11-2004 à 08:56:58    

SetCapture() ne capture pas les mouvements de la souris, il permet juste de spécifier une fenêtre qui "attrapera" la souris !
Si tu veux capturer la souris, tu dois réagir au message WM_MOUSEMOVE, qui te permet de plus de vérifier si une touche est enfoncée, dont le code est stocké dans wParam (MK_CONTROL pour la touche ctrl)


Message édité par Harkonnen le 03-11-2004 à 08:57:14

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-11-2004 à 11:45:36    

oliv5... une connaissance qu'on retrouve sur des forums =)

Reply

Marsh Posté le 03-11-2004 à 15:58:58    

Harkonnen a écrit :

SetCapture() ne capture pas les mouvements de la souris, il permet juste de spécifier une fenêtre qui "attrapera" la souris !
Si tu veux capturer la souris, tu dois réagir au message WM_MOUSEMOVE, qui te permet de plus de vérifier si une touche est enfoncée, dont le code est stocké dans wParam (MK_CONTROL pour la touche ctrl)


 
Merci, mais ca je le sais déjà (bein oui, c en gros dans la MSDN)
 
Avec setcapture, la fenetre choisie recoit les evenement WM_MOUSEMOVE, c'est ce que je souhaite.
 
Mais ...
 
1) SetCapture m'oblige a appuyer sur le bouton gauche de la souris pour que la capture se continue (si on lache, ca s'arrete) : pas top
 
2) Si je n'utilise pas SetCapture, je ne capte les messages WM_MOUSEMOVE , et donc le mvt de ma souris, que dans de la fenetre active. Or, moi, je veux capturer son déplacement meme si elle se déplace par dessus le bureau ou une autre appli. L'utilisateur doit pouvoir par exemple réduire la fenetre principale de mon appli et continuer a voir la souris capturée.
 
Principe de la fonctionnalité que je veux faire dans mon appli : enregistrer les actions souris pour les rejouer plus tard et automatiser certaines taches dans des softs pas prévus pour. J'ai déjà fait ca pour le clavier.  
L'utilisateur appuie sur ctrl, puis effectue un certain nombre de mouvements avec la souris, clics gauche, droit centre, roulette (:)).  
Il est vital que les actions effectuées par la souris soient effectuées directement sur les fenetres des applis qui ne sont pas automatisées.


Message édité par oliv5 le 03-11-2004 à 16:07:20
Reply

Marsh Posté le 03-11-2004 à 16:00:18    

couak a écrit :

oliv5... une connaissance qu'on retrouve sur des forums =)


 
couak... c'est pourquoi je vais sur les forums =)
 
Vous n'avez pas compris ... ce n'est pas une simple capture de souris que je veux faire... (voir au dessus).

Reply

Marsh Posté le 03-11-2004 à 16:12:33    

oliv5 a écrit :

couak... c'est pourquoi je vais sur les forums =)
 
Vous n'avez pas compris ... ce n'est pas une simple capture de souris que je veux faire... (voir au dessus).


la connaissance... je parlais de toi, banane ! t'en connais beaucoup des couak qui sortent de l'esiea ?

Reply

Marsh Posté le 03-11-2004 à 16:16:37    

couak a écrit :

la connaissance... je parlais de toi, banane ! t'en connais beaucoup des couak qui sortent de l'esiea ?


 
Ha euh  :D  salut couak :) (pkoi tu reprends pas ton ancien seudo ?)


Message édité par oliv5 le 03-11-2004 à 16:18:56
Reply

Marsh Posté le 03-11-2004 à 16:19:49    

pour passer incognito sur les forums et me foutre de la gueule de gens que je connais (comme toi par exemple) :D

Reply

Marsh Posté le 03-11-2004 à 16:25:35    

Stop polluer mon post alors, ca va faire peur aux gens qui pourraient me répondre :)

Reply

Marsh Posté le 04-11-2004 à 16:12:36    

up :(

Reply

Marsh Posté le 04-11-2004 à 16:12:36   

Reply

Marsh Posté le 04-11-2004 à 16:26:52    

Hook sur souris...
ici c'est bien expliqué, et en plus le programme qui illustre le truc est bien trouvé
http://www.codeproject.com/dll/hooks.asp
http://www.codeproject.com/dll/#Hooks


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 04-11-2004 à 19:58:20    

j'ai déjà essayé, ce qui est étonnant c'est que quand je met un hook sur la souris, je ne recoit pas le msg WM_MOUSEMOVE.
Pourtant dans l'exemple, c'est bien celui la qu'il recoit et teste, en plus du msg WM_NCMOUSEMOVE que je ne connais pas.
 
je vais essayer de compiler cet exemple.
En tout cas, merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed