Lire movement souri

a marqué ce sujet comme résolu.

Salut,

j'aimerais savoir comment lire les mouvements de la souri pour les enregistrer dans un fichier? La difficulté est que je ne veux pas lire la position du curseur, uniquement les mouvements physique de la souri. L'objectif étant de comparer les mouvements envoyé par la souri (quand l'utilisateur la bouge) et les mouvements effectué à l'écran (le curseur qui bouge) et déclenché une alerte quand les deux ne correspondent pas (la souri n'a pas bougé mais le curseur c'est déplacé de 500px a gauche par exemple).

Salut,

Serait-il possible de faire un effort pour l'orthographe s'il te plaît ? Et surtout dans le titre, sinon tu n'auras pas beaucoup de réponse. Lire mouvement souris en <Langage>

Pourrais-tu préciser dans quelle langage tu souhaite faire ça ?

Et je ne comprend pas bien comment cela serait possible, comment la souris pourrais bouger sans que le curseur bouge ou inversement ? (A moins que la souris ne capte pas bien, mais dans ce cas la tu ne peux rien y faire). Si tu veux de l'aide, il nous faudra plus de détail ainsi qu'une meilleure présentation et une meilleure orthographe.

les mouvements physique de la souris

Soit tu fais confiance au système pour avoir bien récupéré cette donnée, soit tu le fais toi-même. Physiquement, donc. Tu installes un truc qui capte la position de la souris dans le monde réel et tu compares à ce que te donne ton PC.

Sachant que sauf cas très particulier, tu n'as pas réellement envie de faire ça. Bref, à quel problème souhaites-tu répondre ?

(utilise le pilote.)

S'il veut les mouvements physique de la souris (et les comparer avec le curseur), ce sera insuffisant.

+1 -0

Sans compter non plus que l'on ne sait même pas de quel OS il s'agit, alors que ce style de problème dépend très fortement du système d'exploitation…

Je ne sais pas bien à quel problème c'est supposé répondre mais je pense que le meilleur conseil qu'on puisse te donner c'est de prendre quelques moments pour respirer un coup et te demander pour quelle raison tu veux faire ça exactement.

D'ici on dirait que tu cherches à implémenter une solution technique impossible à un problème probablement beaucoup plus simple que ça. Dans ce genre de cas la seule chose intelligente à faire, c'est machine arrière.

+1 -0

(utilise le pilote.)

S'il veut les mouvements physique de la souris (et les comparer avec le curseur), ce sera insuffisant.

Gabbro

il est possible de bouger la souris logiciellement (par exemple Windows XP a une option pour téléporter la souris automatiquement sur le bouton « OK » quand un dialogue apparaît). j’ai supposé que c’était ce que le p·o· voulait détecter.

+0 -0

Tu lis la position de la souris toutes les x ms avec le langage et la méthode que tu souhaites et tu compares aux dernières données relevés. Tu établis un écart qui est trop grand (selon toi) pour que ce soit un utilisateur qui ai bougé la souris. Facile. Le plus compliqué, je pense, sera de déterminer ce x et la distance max.

Sans parler du ratio entre le mouvement perçu par le capteur et le mouvement imprimé au pointeur en pixels/s. Ou d'une éventuelle fonction d'accélération non linéaire.

Ni du système de filtre qui permet de rendre la souris plus fluide…

Ma question n'a toujours pas trouvé sa réponse, pourquoi cherches-tu à mesurer un tel écart ?

+3 -0

en gros je souhaite savoir simplement si le mouvement du curseur est naturel (mouvement de la souris) ou si il provient d'un logiciel tiers.

Dans ce cas je ne vois qu'une solution, mais c'est potentiellement compliqué: intercepter les appels à SetCursorPos, une des principales fonctions qui permettent de « téléporter » le curseur. Mais vu que ça se passe dans user32.dll, ton programme sera direct classé comme dangereux à moins d'avoir des autorisations comparables à celles des anti-virus. Ou alors tu t'amuses avec le driver ou la couche basse, mais bonne chance.

Plus simple, tu peux tenter ta chance avec un hook WH_MOUSE_LL, mais ce n'est pas garanti qu'un appel à une fonction SetCursorPos appelle effectivement ton hook (il faut essayer). Là encore il y a toutes les chances pour que ton logiciel soit catégorisé comme malveillant, puisque c'est ce qui s'utilise typiquement pour les keyloggers/mouseloggers.

Par contre moi non plus je ne vois pas trop où tu veux en venir.

  • Si tu cherches à confiner le curseur dans une zone bien définie (par exemple pour éviter de sortir par inadvertance de la fenêtre d'un jeu qui n'est pas en plein écran), il y a la fonction ClipCursor
  • Si tu cherches à faire comme dans un FPS où tu peux bouger la souris à l'infini sans être gêné par les bords de l'écran, je ne sais pas comment ils font mais c'est possible en natif (probablement avec un framework comme unity) ou sur le web (voir pointer lock API)
  • Si la « téléportation » du curseur comme dans certaines boîtes de dialogue te gêne, ça se paramètre très probablement dans le panneau de configuration.

Avec ça je crois qu'on a fait le tour et je ne peux qu'approuver les réponses précédentes, essaie de mieux nous expliquer ce que tu veux réellement faire.

+0 -0

@QuentinC : Je suis quasi certain que quand on utilise une tablette ça doit faire appel à ce fameux SetCursorPos quand on pointe le stylo à l'autre bout de la tablette d'un coup et donc le problème ne serait pas résolu avec cette méthode.

Avec le hook je ne suis effectivement pas sûr que les appels programmatiques soient relayés. Je ne pense pas en fait, ça serait trop facile de faire planter le système.

Pour les stylets et PC hybrides, je n'ai aucune idée, je ne suis pas en mesure de tester. A noter qu'il y a des messages spécifiques pour le tactile (WM_TOUCH). Donc ça peut aussi passer complètement ailleurs.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte