Déplacer la souris, simuler click (via api)

Contenu du snippet

Bonjour,

ce bout de code permet de:
- manipuler la souris avec le clavier (8 pour aller en haut, 2 pour aller en bas, 4 pour aller à gauche, 6 pour aller a droite
- simuler un click (touche 5)

Il utilise l'api user32 de windows

Attention, votre formulaire doit etre vide car la facon car les évenements de "keypress" sont gérés par le formulaire.
Enfin, si ca ne marche pas direct, cliquez sur votre formulaire pour lui donner le focus (avec la souris par contre !!)

Enfin, n'oubliez pas de mettre "Imports System.Runtime.InteropServices" au tout début du code !

Source / Exemple :


'structure pour récupérer la pos de la souris à partir de l'api
    Public Structure POINTAPI
        Dim x As Int32
        Dim y As Int32
    End Structure

    'importe de l'api la fonction pour bouger la souris
    <DllImport("user32")> Shared Function SetCursorPos(ByVal x As Integer, ByVal y As Integer) As Integer
        ' Nothing required in here 
    End Function

    'importe de l'api la fonction connaitre la position de la souris
    <DllImport("user32")> Public Shared Function GetCursorPos(ByRef lpPoint As POINTAPI) As Integer

    End Function

    'importe de l'api la fonction simuler un click
    <DllImport("user32")> Public Shared Sub mouse_event(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

    End Sub

    'si touche pressée
    Private Sub Form_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
        'recup la position de la souris
        Dim CursorPos As POINTAPI
        Me.GetCursorPos(CursorPos)
        Debug.WriteLine("Position souris: " & CursorPos.x & " - " & CursorPos.y)
        'en fonction de la touche appuyée
        Select Case Asc(e.KeyChar)
            Case 50 'bas
                Me.SetCursorPos(CursorPos.x, CursorPos.y + 10)
            Case 52 'gauche
                Me.SetCursorPos(CursorPos.x - 10, CursorPos.y)
            Case 54 'droite
                Me.SetCursorPos(CursorPos.x + 10, CursorPos.y)
            Case 56 'haut
                Me.SetCursorPos(CursorPos.x, CursorPos.y - 10)
            Case 53 'milieu (click)
                Me.mouse_event(&H2, 0&, 0&, 0, 0)
                Me.mouse_event(&H4, 0&, 0&, 0, 0)
        End Select
    End Sub

    'evenement déclenché quand on clique sur le formulaire
    Private Sub Form_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click
        MsgBox("ta cliqué !!!")
    End Sub

A voir également

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.