Curseur qui passe a travers les bords, si on va tout a droite, reaparait a gauche... pratique :)

Soyez le premier à donner votre avis sur cette source.

Vue 8 868 fois - Téléchargée 652 fois

Description

Bien l bonjour, donc, qu'est ce que je vous ai pondu ?

C'est très simple, j'en avait marre que lorsque je suis a l'autre bout de l'écran je dois faire trois fois le tour de mon tapis de souris pour ramener mon curseur tout à gauche

alors voici un ptit programme qui utilise deux API, 1 pour avoir la position de la souris, l'autre pour la déplacer
Il n'y a pas de forme (enfin si) donc pour la fermer il suffit de faire ctrl alt supr
Sur cette forme il y a un timer à 100 ms pour piquer la position du curseur, je ne connait pas d'autre moyen pour avoir en continu la position du curseur, si vous pouvez me renseigner ^^

Etant donné qu'ily a un timer à 100ms, je me dis que le programme dois planter au bout d'un certain temps, pour le moment ça ne m'est pas arrivé. Je ne connais pas trop ce que ça prend au niveau des ressources...

Ptit truc en plus, si vous aller trop loin dans la zone ou on ferme une fenetre (la zoli croix rouge) vous ne serez pas transfererà l'autre bout de l'ecran ^^ (parceque c'est pratique quand meme cette petite croix) mais il faut quand meme bien viser ... en gros vous avez une zone de 20 pixel

Sinon, jai tester pour d'autre résolution, ça marche, mais je suis sur un ecran 16/9, normalement il n'y a pas de soucis pour les autres, mais si vous pouviez tester ^^

Le code est tout petit mais ça ma pris du temps pour la recherches des API et d'un exemple de déplacement du curseur. et de comprendre le fonctionnemnt des api ^^ (c'est que mon deuxieme programme avce) . bonj'arrete de vous racconter ma vie

Ensuite, j'ai une question pour les connaisseurs : (d'abord j'explique la situation)
donc jeme sert de l'api mouse_event
et à l'endroit ou il faut placer la souris, en pixel sa ne passe pas, j'ai donc rentré une valeur, puis quand je me suis retrouvé a cette valeur, j'ai diviser par ma position en pixel, bon ça c'etait la methode D, puis en reflechissant et regardant l'exemple dont je me suis servi j'ai compris que c'etait 65535 diviser par les pixel (en X ou Y)
j'ai des valur de l'ordre de 51 et 80, mais que represente t'elle ? pourquoi 65535 ? et pourquoi mouse_event se sert de cette unité (pixelX * (65535/PixelX) ??? c'est quoi comme unité ?

Source / Exemple :


Private Sub Timer1_Timer()
Dim pos As POINTAPI
GetCursorPos pos
'Label1.Caption = pos.X
'en haut a droite
If pos.X >= pixelX - 20 And pos.Y <= 20 Then Exit Sub

'en haut
'ne reaparait pas totalment en bas car créerait un bug
If pos.Y = 0 Then Call mouse_event(MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE _
, pos.X * coefficientecranX, (pixelY - 5) * coefficientecranY, 0, 0)

'en bas
'pixelY-1 car n'atteint pas toujours le max
''ne reaparait pas totalment en haut car créerait un bug
If pos.Y >= pixelY - 1 Then Call mouse_event(MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE _
, pos.X * coefficientecranX, coefficientecranY * 3, 0, 0)

'a gauche
'ne reaparait pas totalment a droite car créerait un bug
If pos.X = 0 Then Call mouse_event(MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE _
, (pixelX - 3) * coefficientecranX, pos.Y * coefficientecranY, 0, 0)

'a droite
'pixelX-1 car n'atteint pas toujours le max
''ne reaparait pas totalment a gauche car créerait un bug
If pos.X >= pixelX - 1 Then Call mouse_event(MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE _
, 2 * coefficientecranX, pos.Y * coefficientecranY, 0, 0)

Conclusion :


Je vien d'y penser, la zone de retour au debut(ici tout l'ecran) peut etre bien sur limiter ala forme, cela peut etre utile dans certain prog...

Quand on deplace une fenetre windows, elle se retrouve d'un coup de l'autre coté ^^ moi ça m'amuse ^^

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

nathansecret
Messages postés
63
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 octobre 2011
-
Pour éviter l'utilisation d'un Timer on peut faire une boucle
Do et utiliser l'API Sleep
zemetafyzik
Messages postés
119
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
3 novembre 2007
1 -
Si ça peut vous servir c'est magnifique ^^

Après il y aurais pas mal d'amélioration à faire, comme éviter de se servir d'un timer... Mais bon ça fait un bout de temps que je n'ai pas programmé.

Bonne journée
yannickglt
Messages postés
1
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 mai 2008
-
Joli code! Je le trouve très utile et je l'ai adapté un peu à mes besoins. J'utilise le logiciel Deskspace qui permet d'avoir plusieurs espaces de travails sous la forme d'un cube (semblable à Compiz fusion). Ainsi quand je vais sur le bord gauche de l'écran je passe sur l'espace de travail de gauche et de même pour l'opposé. J'ai cependant laissé tel quel pour le haut et le bas. Je trouve ça super d'aller de la barre des taches à la barre de menu d'une fenêtre aussi rapidement.
frogeraie
Messages postés
10
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
18 janvier 2007
-
j'aime beaucoup ce code que j'utilise pour une installation avec un robot. mais voila, j'ai fait un exe qui une fois lance ne s'arrete plus: cad le curseur continu a traverser le bord meme si je fais ctrl+alt+supp. je suppose qu'il faut ecrire un autre exe pour retablir le fonctionnement normal du curseur, je ny arrive pas, j'ai besoin d'aide!!!
marc660
Messages postés
171
Date d'inscription
jeudi 15 avril 2004
Statut
Membre
Dernière intervention
18 juillet 2007
-
marche pas chez moi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.