Caps lock

penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006 - 11 avril 2005 à 11:40
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010 - 31 déc. 2006 à 03:43
Bonjour à tous,



Pour mon stage, je dois pouvoir lire un code barre avec une douchette (comme les caissières).

Ce que je sais faire c'est récupérer le numéro de ce code barre dans le
DOS. (j'ouvre une fenêtre DOS, j'enfonce la touche CAPS LOCK et je
scanne le code barre).

Je récupère ainsi le bon numéro.



Cependant, je dois développer mon programme en VB.net et je ne sais pas
comment je pourrais faire pour activer la touche capslock, et afficher
le numéro du code barre dans une textbox.

J'arrete pas de rechercher sur sendkeys, sur l'api getkeyboardstate,
tout ce qui est possible en gros, mais je ne trouve rien qui
fonctionne.



Qqn saurait comment on fait?





D'avance un énorme merci

4 réponses

Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
11 avril 2005 à 16:28
Salut :O)

Crée un formulaire avec un bouton : Command1
Fais un copier-coller du code ci-dessous.
Il fonctionne aussi bien pour Win 95/95 que Win NT/2000/XP ...
En cliquant sur le bouton, l'état du bouton CapsLock change...

Bon amusement.

Guy

'--DEBUT DU CODE--

Option Explicit


' Declare Type for API call:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type


' API declarations:
Private Declare Function GetVersionEx Lib "kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long


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 GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long


Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long


'Constant declarations:
Const VK_CAPITAL = &H14
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1


Public Sub CapsLockChangeState()


Dim o As OSVERSIONINFO
Dim NumLockState As Boolean
Dim ScrollLockState As Boolean
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte

o.dwOSVersionInfoSize = Len(o)
GetVersionEx o

GetKeyboardState keys(0)

If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '=== Win95/98
keys(VK_CAPITAL) = 0
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then '=== WinNT
'Simulate Key Press
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_CAPITAL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If


End Sub


Private Sub Command1_Click()
Call CapsLockChangeState
End Sub

'--FIN DU CODE --
0
penchu Messages postés 167 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 janvier 2006
12 avril 2005 à 10:55
Un grand merci à toi. C'est super. (ça m'a permis en même temps d'utiliser l'outil de conversion VB6 => VB.net de Visual Studio. Pour des trucs simples comme ça, aucune erreur et assez rapide. Pour le reste, je ne sais pas, je n'ai pas trop le temps de tester)

Encore merci à toi.
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
12 avril 2005 à 18:00
Heureux que cela te fasse plaisir !

Guy
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
31 déc. 2006 à 03:43
il n'est pas le seul à qui ça fait plaisir.... merci

:)Sator :)
0
Rejoignez-nous