Déplacement de la souris à partir du Clavier [Résolu]

cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 23 févr. 2006 à 14:27 - Dernière réponse : jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention
- 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
Afficher la suite 

6 réponses

jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 23 févr. 2006 à 14:44
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
mushu60 18 Messages postés mardi 11 octobre 2005Date d'inscription 18 juin 2006 Dernière intervention - 23 févr. 2006 à 14:35
0
Utile
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 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention - 23 févr. 2006 à 14:41
0
Utile
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 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 23 févr. 2006 à 16:02
0
Utile
salut,

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

@+

PCPT [AFCK]
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 24 févr. 2006 à 09:46
0
Utile
EXCELLENT REPONSE JULIEN !!!

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

merci beaucoup et encore bravo !!!
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 24 févr. 2006 à 09:49
0
Utile
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

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.