Capturer les mouvements de la souris [Win32] - C - Programmation
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)
Marsh Posté le 03-11-2004 à 11:45:36
oliv5... une connaissance qu'on retrouve sur des forums =)
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 ! |
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.
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).
Marsh Posté le 03-11-2004 à 16:12:33
oliv5 a écrit : couak... c'est pourquoi je vais sur les forums =) |
la connaissance... je parlais de toi, banane ! t'en connais beaucoup des couak qui sortent de l'esiea ?
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 salut couak
(pkoi tu reprends pas ton ancien seudo ?)
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)
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
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
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.
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) ?