Déplacement de la souris à partir du Clavier

Résolu
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 23 févr. 2006 à 14:27
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 24 févr. 2006 à 09:49
Bonjour,

je souhaite déplacer le curseur de la souris à partir des flèches du clavier.
Cela fonctionne pour les quatres directions par contre, je ne vois pas comment faire pour les diagonales (deux touches appuyées).

Auriez vous une idée ?

Merci !!!

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim Pos As PointAPI
GetCursorPos Pos
x = Pos.x
y = Pos.y
If KeyCode = 40 Then 'BAS'
SetCursorPos x, y + 5
Else
If KeyCode = 37 Then 'GAUCHE'
SetCursorPos x - 5, y
Else
If KeyCode = 39 Then 'DROITE'
SetCursorPos x + 5, y
Else
If KeyCode = 38 Then 'HAUT'
SetCursorPos x, y - 5
End If
End If
End If
End If
End Sub

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 14:44
Salut,

Tiens essaie ceci (c est pas optimiser mais c est pour le principe)
'Variable privee du Form
Private BLeft As Boolean
Private BRight As Boolean
Private BUp As Boolean
Private BDown As Boolean


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim Pos As POINTAPI
Dim x As Long
Dim y As Long
GetCursorPos Pos
x = Pos.x
y = Pos.y


Select Case KeyCode
Case vbKeyUp: BUp = True
Case vbKeyDown: BDown = True
Case vbKeyLeft: BLeft = True
Case vbKeyRight: BRight = True
End Select


If BLeft Then
x = x - 5
ElseIf BRight Then
x = x + 5
End If

If BUp Then
y = y - 5
ElseIf BDown Then
y = y + 5
End If


SetCursorPos x, y
End Sub


Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp: BUp = False
Case vbKeyDown: BDown = False
Case vbKeyLeft: BLeft = False
Case vbKeyRight: BRight = False
End Select
End Sub

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
mushu60 Messages postés 18 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 18 juin 2006
23 févr. 2006 à 14:35
If KeyCode = 40 and 39 Then 'BAS DROITE'
SetCursorPos x+5 , y + 5
end if

Une chose comme ca ca ne marche pas ? (dsl je peu pas tester VB n'est pas installé sur ce pc)
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 févr. 2006 à 14:41
mushu60 < NE poura pas fonctionner car les evt clavier ne retourner qu'un seul code touche à la fois : Soit 40 soit 39 ! Jamais les deux en même temps ! C'est impossible.
Pour qu'une construction du type de "40 And 39" fonctionne, il faudrait que les keycode soient tous des puissances de 2 ! Ce qui n'est pas le cas .

CR
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 févr. 2006 à 16:02
salut,

il faut "jouer" en récupérant les touches par GetKeyboardState et/ou GetKeyState

@+

PCPT [AFCK]

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
24 févr. 2006 à 09:46
EXCELLENT REPONSE JULIEN !!!

c'est vraiment d'une ingéniosité (chais pas comment ca s'écrit) :-) ...

merci beaucoup et encore bravo !!!
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 févr. 2006 à 09:49
Salut,

Merci, Merci.
Arrete tu vas me faire rougir...
Mais j suis presque sur qu il y a plus simple et plus optimisé.

Bonne journée

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Rejoignez-nous