Comment "capturer" un message avant qu'il soit traite par le system?

Comment "capturer" un message avant qu'il soit traite par le system? - C++ - Programmation

Marsh Posté le 12-08-2004 à 07:27:35    

Bonjour, j'ai un souci qui m'enerve pas mal.
J'aimerais bien savoir comment "capturer" un message passe au systeme avany qu'il soit traite par le systeme. Ceci sous l'environement Windows.
 
Je m'explique.
Ma these consiste a filtrer les movement du curseur issue d'un systeme homme-machine suivant un certain nombre d'algorithmes. Mais le souci est que dans l'ideal, j'aimerai bien que mon programme puisse "savoir" ou le curseur va etre avant que le curseur soit effectivement bouge.
 
Le systeme homme-machine en amont fait bouger le curseur avec un bete "SetCursorPos", alors que dans l'ideal j'aimerai bien "capturer" les messages SetCursorPos, effectuer le filtrage, puis replacer le curseur avec le resultat issu du filtrage. Car sinon le curseur va faire des va-et-viens style (Pos actuelle)->(Pos issu du systemme amont)->(Pos filtre), au lieu de (Pos actuelle)->(Pos filtre).
 
Donc j'aurais besoin de pouvoir capturer les appels de fonctions "SetCursorPos", une espece de callback sur un message SetCursor quoi.
 
Merci beaucoup.

Reply

Marsh Posté le 12-08-2004 à 07:27:35   

Reply

Marsh Posté le 12-08-2004 à 10:29:35    

Il te faut placer un hook de bas niveau sur la souris
Finction Win32 : SetLowLevelMouseHook ou un truc dans le genre. Il te faut faire une DLL qui va gérer les mouvements souris.
 
En revanche, tu ne pourras pas empécher windows de bouger la souris. Il y a eu récemment un post dans le meme genre. Meme pb. Meme réponse : la gestion de la souris se fait en bas niveau dans Windows, le hook ne te permettra que d'etre au courant du moindre evenement souris, mais pas de les empecher.
 
Enfin, je crois que c'est pas possible, contrairement au clavier qui est trés facilement maitrisable. Mais la souris ...

Reply

Marsh Posté le 12-08-2004 à 10:41:00    

Merci beaucoup pour ta reponse, mais au fait je crois que t'as pas exactement compris ce que je veux.
 
Le probleme est bien le fait que le systeme ne passe pas par la souris. Sinon j'aurais qu'a utiliser DirectInput et le problem est regle tres "facilement".
 
En fait la commande "SetCursorPos" ne touche pas a la souris du tout, elle touche directement au curseur (la souris etant un des moyens possibles de changer la position du curseur). Du coup je pense a capturer le message (et je cherche toujours le nom du message:() qui est genere par la commande "SetCursorPos" qui est lance dans le programme en amont, lire le contenu, filtrer la position et la renvoyer au systeme.

Reply

Sujets relatifs:

Leave a Replay

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