OVH Cloud OVH Cloud

Clavier

26 réponses
Avatar
Jean-Francois.Vassard
Bonjour,

Quelqu'un saurait-il comment il est possible de forcer le clavier en
majuscules ou en minuscules (comme si l'on appuyait manuellement sur la
touche Shift), à l'aide d'un programme Visual Basic (VB5 VB6)?

Merci d'avance,

JF

10 réponses

1 2 3
Avatar
RCR
c'est normal,

tu as oublier les {} ça donne :

SendKeys "{CAPSLOCK}"

un petit coup sur l'aide de VB ça marche toujour !!! lol :-) ...

A Peluche.

"Jean-Francois.Vassard" a écrit dans le
message de news: 42a1f9e2$0$23307$
Bonjour, merci pour votre aide,
J'ai essayé SendKeys (capslock) sur un bouton, mais rien ne se passe au
niveau du clavier. Je ne bascule pas en majuscule ou en minuscule...


"RCR" a écrit dans le message de
news:
re ... voila le code

SendKeys "{CAPSLOCK}"


A Peluche

"RCR" a écrit dans le message de news:
eJaa$
> Tu devrais arriver avec Sendkey() regarde dans l'aide pour la valeur du
> capslock...
>
> A+
>
> "Jean-Francois.Vassard" a écrit dans


le
> message de news: 429e13f2$0$25035$
>> Bonjour,
>>
>> Quelqu'un saurait-il comment il est possible de forcer le clavier en
>> majuscules ou en minuscules (comme si l'on appuyait manuellement sur
>> la
>> touche Shift), à l'aide d'un programme Visual Basic (VB5 VB6)?
>>
>> Merci d'avance,
>>
>> JF
>>
>>
>
>








Avatar
Jacques93
Bonjour Jean-Francois.Vassard,
Jean-Francois.Vassard a écrit :
Bonjour,

Merci pour cette aide.
J'ai essayé SendKeys {CAPSLOCK} sur un bouton, mais rien ne se passe au
niveau du clavier. Je ne bascule pas en majuscule ou en minuscule...
Il y a bien un petit flash au niveau du témoin de clavier si je suis en
minuscule, il semble que le système passe brièvement en minuscule,
majuscule, minuscule. En tout cas, c'est trop bref pour être exploité avec
un lecteur de codes-barres, ce que j'essaie de faire. (Il faut que le
code-barre soit toujours lu en majuscule pour éviter des sorties du genre
&é"'( au lieu de 12345 avec Win XP...
J'ai aussi cherché dans le manuel en ligne de VB, mais je n'ai pas trouvé
d'indications complémentaires sur {CAPSLOCK}.




Tu peux essayer ceci :

Option Explicit

Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)

Private Declare Function MapVirtualKey Lib "user32" _
Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1

Private Sub MajKeyb()
keybd_event vbKeyCapital, _
MapVirtualKey(KeyCodeConstants.vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyCapital, _
MapVirtualKey(KeyCodeConstants.vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub


--
Cordialement,

Jacques.
Avatar
Jacques93
Bonjour Jean-Francois.Vassard,

Et pour passer en minuscules :

Private Sub MinKeyb()
keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
End Sub


--
Cordialement,

Jacques.
Avatar
Jean-Francois.Vassard
Bonjour,

Merci pour cette aide.
J'ai essayé SendKeys {CAPSLOCK} sur un bouton, mais rien ne se passe au
niveau du clavier. Je ne bascule pas en majuscule ou en minuscule...
Il y a bien un petit flash au niveau du témoin de clavier si je suis en
minuscule, il semble que le système passe brièvement en minuscule,
majuscule, minuscule. En tout cas, c'est trop bref pour être exploité avec
un lecteur de codes-barres, ce que j'essaie de faire. (Il faut que le
code-barre soit toujours lu en majuscule pour éviter des sorties du genre
&é"'( au lieu de 12345 avec Win XP...
J'ai aussi cherché dans le manuel en ligne de VB, mais je n'ai pas trouvé
d'indications complémentaires sur {CAPSLOCK}.

JFV

"RCR" a écrit dans le message de
news:%
c'est normal,

tu as oublier les {} ça donne :

SendKeys "{CAPSLOCK}"

un petit coup sur l'aide de VB ça marche toujour !!! lol :-) ...

A Peluche.

"Jean-Francois.Vassard" a écrit dans le
message de news: 42a1f9e2$0$23307$
> Bonjour, merci pour votre aide,
> J'ai essayé SendKeys (capslock) sur un bouton, mais rien ne se passe au
> niveau du clavier. Je ne bascule pas en majuscule ou en minuscule...
>
>
> "RCR" a écrit dans le message de
> news:
>> re ... voila le code
>>
>> SendKeys "{CAPSLOCK}"
>>
>>
>> A Peluche
>>
>> "RCR" a écrit dans le message de news:
>> eJaa$
>> > Tu devrais arriver avec Sendkey() regarde dans l'aide pour la valeur


du
>> > capslock...
>> >
>> > A+
>> >
>> > "Jean-Francois.Vassard" a écrit


dans
> le
>> > message de news: 429e13f2$0$25035$
>> >> Bonjour,
>> >>
>> >> Quelqu'un saurait-il comment il est possible de forcer le clavier en
>> >> majuscules ou en minuscules (comme si l'on appuyait manuellement sur
>> >> la
>> >> touche Shift), à l'aide d'un programme Visual Basic (VB5 VB6)?
>> >>
>> >> Merci d'avance,
>> >>
>> >> JF
>> >>
>> >>
>> >
>> >
>>
>>
>
>




Avatar
Gloops
Bonjour,

Ah, chez moi MajKeyb fonctionne bien (d'ailleurs c'était quelque chose
que je ne connaissais pas du tout),

mais MinKeyb semble ne rien donner.
J'ai supprimé la parenthèse en trop à la fin, mais le clavier ne passe
pas en minuscules. J'ai essayé en remplaçant le Or par And, puisqu'aussi
bien il s'agit de désactiver un bit, mais ça n'a pas été probant.

A reprendre à tête reposée.

Jacques93 a écrit, le 11/06/2005 18:33 :
Bonjour Jean-Francois.Vassard,

Et pour passer en minuscules :

Private Sub MinKeyb()
keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
End Sub




Avatar
Gloops
ça y est, j'ai compris en lisant l'aide des codes de touches
- vbKeyShift est la touche Majuscules
- vbKeyCapital est la touche de verrouillage de majuscules

Dans le panneau de configuration de Windows XP, "Options régionales,
date, heure et langue", "Options régionales et linguistiques", onglet
Langues, bouton Détails, puis onglet Paramètres, bouton Paramètres de
touches, on trouve en haut de la boîte de dialogue un cadre "Pour
déverrouiller les majuscules", avec deux boutons radio, "Appuyer sur la
touche VERR.MAJ", et "Appuyer sur la touche Maj".

La macro telle qu'elle est fournie fonctionne avec une machine où dans
ce cadre est coché le bouton radio "Appuyer sur la touche Maj". Sur ma
machine, est coché le bouton radio "Appuyer sur la touche VERR.MAJ".

En conséquence, je peux repasser en minuscules en déclenchant à nouveau
la macro MajKeyb, qui fait donc bascule.

Selon les versions de Windows, on déverrouille les majuscules en
appuyant à nouveau sur Verrouillage majuscules, ou en appuyant sur
Majuscules, à savoir la touche Shift. Windows XP met tout le monde
d'accord en proposant les deux.

Apparemment, il faut cogiter un peu pour trouver un traitement qui
fonctionne sur différentes versions de Windows. J'imagine que
GetKeyboardState aide bien pour vérifier le résultat de ce qu'on fait.
_____________________________________
Gloops a écrit, le 11/06/2005 22:33 :
Bonjour,

Ah, chez moi MajKeyb fonctionne bien (d'ailleurs c'était quelque chose
que je ne connaissais pas du tout),

mais MinKeyb semble ne rien donner.
J'ai supprimé la parenthèse en trop à la fin, mais le clavier ne passe
pas en minuscules. J'ai essayé en remplaçant le Or par And, puisqu'aussi
bien il s'agit de désactiver un bit, mais ça n'a pas été probant.

A reprendre à tête reposée.

Jacques93 a écrit, le 11/06/2005 18:33 :

Bonjour Jean-Francois.Vassard,

Et pour passer en minuscules :

Private Sub MinKeyb()
keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
End Sub







Avatar
Gloops
Gloops a écrit, le 11/06/2005 23:49 :
Apparemment, il faut cogiter un peu pour trouver un traitement qui
fonctionne sur différentes versions de Windows. J'imagine que
GetKeyboardState aide bien pour vérifier le résultat de ce qu'on fait.



Je n'ai pas cogité très longtemps, mais après tout peut-être que ça
suffit ...


Private Sub cmdMaj_Click()
MajKeyb
End Sub

Private Sub cmdMin_Click()
MajKeyb
MinKeyb
End Sub
Avatar
Gloops
Gloops a écrit, le 12/06/2005 00:06 :
En fait, ce que je disais marche si on a au départ le clavier en minuscules.

J'aurais dû écrire

Private Sub cmdMaj_Click()
MinKeyb
MajKeyb
End Sub


Tout ça dit sans faire de tests avec l'autre configuration et en
revenant de quelques heures de marche ...



Private Sub cmdMaj_Click()
MajKeyb
End Sub

Private Sub cmdMin_Click()
MajKeyb
MinKeyb
End Sub



Avatar
Gloops
Alors comme ça, j'ai aggravé mon cas, en remplaçant quelque chose de
faux par quelque chose de tout aussi faux.

Alors je me suis dit, bon, cette fois, on teste.

Avec chacune des deux configurations de clavier (retour en minuscules
avec la touche de verrouillage de majuscules, ou avec la touche Shift),
j'ai cliqué trois fois de suite sur un des deux boutons puis trois fois
de suite sur l'autre, et le témoin des majuscules était bien allumé
quand j'avais cliqué sur cmdMaj, et éteint quand j'avais cliqué sur
cmdMin. Il me semble bien que c'est ça qu'on vise ...

Je vais bien avoir réussi à dire un truc qui se tient, cette fois ?

Allez cette fois je balance toute la sauce, qu'il n'y ait pas
d'hésitation. C'est donc le code d'un formulaire qui comporte un bouton
cmdMaj et un bouton cmdMin.
____________________________________________________________________
Option Explicit

Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)

Private Declare Function MapVirtualKey Lib "user32" _
Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1

Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As
Byte) As Long

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type


Private Sub MajKeyb()
keybd_event vbKeyCapital, _
MapVirtualKey(KeyCodeConstants.vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyCapital, _
MapVirtualKey(KeyCodeConstants.vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub

Private Sub MinKeyb()
keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event KeyCodeConstants.vbKeyShift, _
MapVirtualKey(KeyCodeConstants.vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub

Private Sub cmdMaj_Click()
Dim kbArray As KeyboardBytes
GetKeyboardState kbArray.kbByte(0)
If kbArray.kbByte(KeyCodeConstants.vbKeyCapital) = 0 Then
MajKeyb
End If
End Sub

Private Sub cmdMin_Click()
Dim kbArray As KeyboardBytes
GetKeyboardState kbArray.kbByte(0)
If kbArray.kbByte(KeyCodeConstants.vbKeyCapital) = 1 Then
MinKeyb
End If
DoEvents
GetKeyboardState kbArray.kbByte(0)
If kbArray.kbByte(KeyCodeConstants.vbKeyCapital) = 1 Then
MajKeyb
End If
End Sub
Avatar
Gloops
Zoury a écrit, le 06/06/2005 17:09 :

Salut Jean-Francois ! :O)

Pour un textbox ou des textboxes contenus dans ton application, la méthode
proposée par Gloops devrait le travail.



Eh bien avec le bazar que j'ai semé dans le fil, maintenant, il ne
s'agit pas de se mélanger les pinceaux.

Zoury faisait référence à TurnOn VK_CAPITAL disponible là
http://www.mentalis.org/apilist/SetKeyboardState.shtml
1 2 3