Inverser le mouvement du curseur de la souris

Soyez le premier à donner votre avis sur cette source.

Vue 13 277 fois - Téléchargée 932 fois

Description

C'est juste un petit bout de code pour faire des farces ou inclure dans un trojan, ça servira sans doute aux débutants comme moi qui ne veulent pas perdre du temps à chercher comment faire.

C'est aussi un bon exemple d'utilisation des fonctions "GetCursorPos" et "SetCursorPos"

Source / Exemple :


'CODE POUR INVERSER LE MOUVEMENT DE LA SOURIS

'Sur une feuille, placer un Timer et 2 boutons
'Ajouter un module

'###############################
'### A mettre dans un module ###
'###############################
'Déclaration d'un nouveau type de variable contenant 2 éléments
Public Type Orthonormé
    X As Long
    Y As Long
End Type

'Fonction permettant de connaître la position X et Y du curseur de la souris
Declare Function GetCursorPos Lib "user32" (lpPoint As Orthonormé) As Long

'Fonction permettant de définir des coordonnées pour le curseur de la souris
Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

'########################################
'### A mettre dans le code de la Form ###
'########################################
Dim Pos_Précédente As Orthonormé 'Contient la position du curseur capturée une 1ère fois
Dim Pos_Actuelle As Orthonormé 'Contient la position du curseur capturée une 2ème fois, 1 demi 100e de seconde plus tard
Dim Pos_Inverse As Orthonormé 'Contient la position inverse du curseur par rapport à sa "Pos_Précédente" et sa "Pos_Actuelle"

Private Sub Form_Load()
    'Initialise l'objet Timer
    Timer1.Enabled = False
    Timer1.Interval = 5
End Sub

Private Sub Command1_Click()
    'Capture les coordonnées du curseur
    GetCursorPos Pos_Précédente
    'Copie ses coordonnées dans une 2e variable
    Pos_Inverse = Pos_Précédente
    'Active la minuterie qui contient le code d'inversion
    Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
    'Arréte l'inversion du mouvement du curseur en désactivant l'objet Timer
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    'Enregistre la position actuelle du curseur
    GetCursorPos Pos_Actuelle

    'Teste si le curseur bouge, si c'est le cas il calcule le mouvement inverse et l'applique au curseur
    If Pos_Actuelle.X <> Pos_Précédente.X Or Pos_Actuelle.Y <> Pos_Précédente.Y Then
        'Calcul du mouvement inverse
        Pos_Inverse.X = Pos_Précédente.X + ((Pos_Actuelle.X - Pos_Précédente.X) * (-1))
        Pos_Inverse.Y = Pos_Précédente.Y + ((Pos_Actuelle.Y - Pos_Précédente.Y) * (-1))
        'positionne le curseur
        SetCursorPos Pos_Inverse.X, Pos_Inverse.Y
    End If

    'Teste si le curseur a atteint l'un des 4 bords de l'écran, si c'est le cas le curseur ressort de l'autre côté de l'écran (cela l'empêche de rester coincé)
    '
    'Si il touche le bord droit de l'écran le curseur est replacé sur le bord gauche
    If Pos_Inverse.X >= ScaleX(Screen.Width, vbTwips, vbPixels) Then SetCursorPos 1, Pos_Actuelle.Y
    'Pareil pour le bord gauche
    If Pos_Inverse.X <= 1 Then SetCursorPos ScaleX(Screen.Width, vbTwips, vbPixels) - 2, Pos_Actuelle.Y
    'Pareil pour le bas de l'écran
    If Pos_Inverse.Y >= ScaleY(Screen.Height, vbTwips, vbPixels) Then SetCursorPos Pos_Actuelle.X, 1
    'Pareil pour le haut de l'écran
    If Pos_Inverse.Y <= 1 Then SetCursorPos Pos_Actuelle.X, ScaleY(Screen.Height, vbTwips, vbPixels) - 2
    '
    'Les méthodes ScaleX ou ScaleY convertissent une mesure de hauteur ou de largeur en une autre, ici le "twips" en "pixel"

    'Enregistre la position du curseur pour pouvoir la comparer à la prochaine "position actuelle" et en déduire le mouvement de la souris
    GetCursorPos Pos_Précédente
End Sub

Conclusion :


Remerciement à fou volant13 et aux remarques de Shivan pour la gestion des collisions avec le bord de l'écran sur qui j'ai honteusement copité.
Oui, je sais que leur code a le même rôle que le mien mais chez moi il fonctionnait mal, c'est tout.

PS : Soyez indulgent svp c'est la première source que je dépose.

rePS : J'espère que c'est assez commenté ;-)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
dimanche 17 octobre 2010
Statut
Membre
Dernière intervention
20 février 2011

Bonjour tryve tien va voire ce lien tu trouvera ton bonheur :
http://www.01net.com/telecharger/windows/Personnaliser/Curseurs/fiches/41269.html
Messages postés
2
Date d'inscription
dimanche 26 juillet 2009
Statut
Membre
Dernière intervention
3 janvier 2010

Bonjour
Mon niveau informatique = zéro
je possède un trés vieux (comme moi)logiciel(sharware) qui se nôme CURPAN en démo ,il m'existe plus d'aprés mes recherches.
Son but était de traverser l'écran et arrivé au bout de ressortir de l'autre côté (haut, bas, gauche, droite)
Pourriez-vous s'il vous plaît me dire si il existe un autre logiciel du même genre car je le trouve bien utile
D'avance merci
P.S :pas de blague s'il vous plâît merci
Yves
Messages postés
1
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
19 août 2009

Bonjour,
Je ne connait rien en informatique,Je le dit au moin. :)
Voilà je pense avoir été victime d'un trojan contenant ce code source ,car pour pouvoir déplacé mon curseur comme je l'entend il faut que je pivote ma souris a 90° ,honnêtement déjà que mon boulot est chi.... alors si on me rajoute une souris qui fait chi.. comprenez que cela peut provoquer des tension au sein du bureau .
Donc ma demande serai comment se débarrassé de ce code.
Merci.
Messages postés
1
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
26 août 2006

Merci beacucoup pour ce code ca m'a grandement servi je suis en faite entrain de concevoir un ptit trojan "gentil" pour embeter un peu les copins..
Messages postés
35
Date d'inscription
mercredi 7 avril 2004
Statut
Membre
Dernière intervention
1 août 2005

Salut g.a.u.t.i.e.r, pour ce qui est dînverser les mouvement de la souris dès le lancement du programme il suffi de remplacer le code de Form1_Load par celui de Command1_Click^^

Ca te donneras un truc ds ce genre la :

Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 5
GetCursorPos Pos_Précédente
Pos_Inverse = Pos_Précédente
Timer1.Enabled = True
End Sub

tu peux aussi laisser la Command1 pour pouvoir relancer l'inversion quand tu veux, pour ce qui est de lancer le programme au démarage de window, c'est asez long comme code, mais tu peux aller voir la source : http://www.vbfrance.com/code.aspx?ID=6999 de Mikax et t'en inspiré ou tt copier a toi de voir^^
Bonn programm' a ts !!
Afficher les 12 commentaires

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.