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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 32 386 fois - Téléchargée 30 fois

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

Ajouter un commentaire Commentaires
werdDomain Messages postés 60 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 novembre 2011
13 sept. 2011 à 05:44
Oui c vrais... Il avais oublier de commenter ce bout de code:

Me.mouse_event(&H2, 0&, 0&, 0, 0)
Me.mouse_event(&H4, 0&, 0&, 0, 0)Sa envoie le click ... Donc &H2 DownClick et &H4 UpClick ...
plutonium2222 Messages postés 1 Date d'inscription samedi 14 mai 2011 Statut Membre Dernière intervention 12 septembre 2011
12 sept. 2011 à 19:18
Il y as mieux c'est sur, mais niveau explication du codage...Pas super...
werdDomain Messages postés 60 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 novembre 2011
22 nov. 2009 à 06:29
javais juste oublié de voté.Comme il faut laisser un commentaire, le voici :) 10/10!!
werdDomain Messages postés 60 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 novembre 2011
22 nov. 2009 à 06:26
très bien le code ^^
je pourrais te conseiller d'utiliser un "Low Level Keybord Hook" pour savoir quelle touche a été enfoncé sans avoir besoin d'avoir un focus sur un contrôle de ton form.
En effet, il vas déclenché un évènement peut importe sur quelle fenêtre ou contrôle le focus est.

voici un lien d'un exemple très complet ^^

http://www.vbfrance.com/codes/HOOK-PB-COMPATIBILITE-NET_38415.aspx

je donne un 10/10 pour la pertinence de ton code.
Bonne continuation.
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
2 sept. 2008 à 19:17
c cool man bon travaille !!

peut tu taper des touche du clavier automatiquement avec vb

a l'aide de API jihedbond@gmail.com

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.