Inverser le mouvement du curseur de la souris

Soyez le premier à donner votre avis sur cette source.

Vue 13 148 fois - Téléchargée 917 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

cs_Thib
Messages postés
20
Date d'inscription
vendredi 4 mai 2001
Statut
Membre
Dernière intervention
24 janvier 2004
-
A quoi ca sert d'y mettre ds un trojan ?
z980x
Messages postés
898
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
2 -
a faire des blagues a ta victime !
AtomikTopinambour
Messages postés
17
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
27 juin 2002
-
Thib>Imagine que tout à coup ton curseur se mette à aller à gauche au lieu d'aller à droite et si en plus de ça tu rajoute l'inversion des boutons de la souris, la pauvre victime va se mélanger les hémisphères cérébraux ! ;o)))

Si ça t'intéresse je suis en train de créer un code pour prendre le contrôle de la souris sur un autre PC (un trojan quoi).

Pour en revenir à l'inversion du mouvement de la souris j'aimerais savoir si mon code marche bien chez vous, merci.
cs_Mercury
Messages postés
329
Date d'inscription
jeudi 3 janvier 2002
Statut
Membre
Dernière intervention
7 octobre 2005
-
Intellectuellement, c'est à chier (hormis le code utiliser pour dérouter le déplacement du curseur), mais à utiliser, c'est le pied ! Vraiment trop marrant ton truc ;-)

Si tu en as des autres comme ça, je suis preneur.

@+

Mercury.
cs_Clem
Messages postés
282
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
12 février 2007
-
Dommage que je l'avais pas ce matin, j'était sur un réseau de deux salles, et su l'ordi ou j'était il y a avait le vb.
Sinon pour prendre le controle de la souris, j'avais déjà fait une foix, en cours d'info, comme le prof savait que je fesait du vb, et que les autres devaient apprendre à programmer (en quick basic), il m'a laisser avec mon vb sur un ordi.
Mais je n'avais pas eu le temps de faire plus que le déplacement de la souris à distance pas utilisation des bouttons.

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.