PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → EnvoieTouche NE FONCTIONNE PAS
EnvoieTouche NE FONCTIONNE PAS
Débuté par aminebenhedi, 03 juin 2014 08:07 - 8 réponses
Membre enregistré
339 messages
Posté le 03 juin 2014 - 08:07
Bonjour;

Je suis en train de developper une application qui permet d'utiliser le code à barre.
l'utilisateur doit taper la touche CAPS LOCK au debut de l'ouverture du programme (juste 1 seule fois) pour pouvoir passer le ticket code a barre a travers la douchette correctement.

J'ai essayé d'utiliser la commande
EnvoieTouche("{VERRMAJ}")


mais ca n'as pas marché chez quelques client (SON PC est de marque LENOVO)

Comment faire pour rendre la touche Majuscule toujours activé?

Merci d'avance.
Amine
Posté le 03 juin 2014 - 10:05
Bonjour,

En général, il existe un paramètrage de la douchette qui permet de passer tous les codes scannés en majuscules, quelle que soit la configuration du clavier.

Hubert
Posté le 03 juin 2014 - 14:06
Bonjour

au lieu de faire ca, modifie ton champ de réception pour qu'il accepte
TOUS les caractères (et pas seulement les majuscules)...

Puis, dans ton traitement de la valeur, si tu ne veux vraiment que des
majuscules, tu fais un majuscule(ValeurCodeBarre)... Comme ca, pas de
configuration, pas de conflit, rien...

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 6/3/2014 12:07 AM, AMINE ( RAM ) wrote:
Bonjour;

Je suis en train de developper une application qui permet d'utiliser le
code à barre.
l'utilisateur doit taper la touche CAPS LOCK au debut de l'ouverture du
programme (juste 1 seule fois) pour pouvoir passer le ticket code a
barre a travers la douchette correctement.

J'ai essayé d'utiliser la commande
EnvoieTouche("{VERRMAJ}")


mais ca n'as pas marché chez quelques client (SON PC est de marque LENOVO)

Comment faire pour rendre la touche Majuscule toujours activé?

Merci d'avance.
Amine
Posté le 03 juin 2014 - 16:21
Bonjour,
Le problème avec les lecteurs de code barre est plus qu'un passage en
majuscule.
Il faut réellement émuler un CAPS-LOCK, sinon les chiffre 1,2,3... sont
remplacés pas &,é," . La douchette n'envoie pas de caractères, mais des
scans-code, qui sont interprétés comme des saisies sur le clavier.
Il faut soit paramétrer correctement le lecteur, soit "décoder" la saisie.
Le mieux étant évidemment de paramétrer la douchette.

Frédéric.

"Fabrice Harari" a écrit dans le message de groupe de discussion :
20141640b80ef4fa03be9222414f2c2b0aea@news.pcsoft.fr...

Bonjour

au lieu de faire ca, modifie ton champ de réception pour qu'il accepte
TOUS les caractères (et pas seulement les majuscules)...

Puis, dans ton traitement de la valeur, si tu ne veux vraiment que des
majuscules, tu fais un majuscule(ValeurCodeBarre)... Comme ca, pas de
configuration, pas de conflit, rien...

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 6/3/2014 12:07 AM, AMINE ( RAM ) wrote:
Bonjour;

Je suis en train de developper une application qui permet d'utiliser le
code à barre.
l'utilisateur doit taper la touche CAPS LOCK au debut de l'ouverture du
programme (juste 1 seule fois) pour pouvoir passer le ticket code a
barre a travers la douchette correctement.

J'ai essayé d'utiliser la commande
EnvoieTouche("{VERRMAJ}")


mais ca n'as pas marché chez quelques client (SON PC est de marque LENOVO)

Comment faire pour rendre la touche Majuscule toujours activé?

Merci d'avance.
Amine
Posté le 03 juin 2014 - 17:12
Bonjour Frédéric

hmmm

je ne me rappelle pas avoir jamais eu ce problème... intéressant... je
suppose que j'ai simplement paramétré la douchette dés le départ

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com



On 6/3/2014 8:21 AM, "Frédéric DEMILLY" wrote:
Bonjour,
Le problème avec les lecteurs de code barre est plus qu'un passage en
majuscule.
Il faut réellement émuler un CAPS-LOCK, sinon les chiffre 1,2,3... sont
remplacés pas &,é," . La douchette n'envoie pas de caractères, mais des
scans-code, qui sont interprétés comme des saisies sur le clavier.
Il faut soit paramétrer correctement le lecteur, soit "décoder" la saisie.
Le mieux étant évidemment de paramétrer la douchette.

Frédéric.

"Fabrice Harari" a écrit dans le message de groupe de discussion :
20141640b80ef4fa03be9222414f2c2b0aea@news.pcsoft.fr...

Bonjour

au lieu de faire ca, modifie ton champ de réception pour qu'il accepte
TOUS les caractères (et pas seulement les majuscules)...

Puis, dans ton traitement de la valeur, si tu ne veux vraiment que des
majuscules, tu fais un majuscule(ValeurCodeBarre)... Comme ca, pas de
configuration, pas de conflit, rien...

Cordialement

Posté le 03 juin 2014 - 18:01
Disons que j'ai souvent été confronté à ce problème, y compris avec des
douchettes "récalcitrantes", impossibles à paramétrer correctement (et qui
sont retournées fissa chez l'envoyeur ;) ).

Frédéric.

"Fabrice Harari" a écrit dans le message de groupe de discussion :
2014407f2ea0149610512f5b2d4c8169363e@news.pcsoft.fr...

Bonjour Frédéric

hmmm

je ne me rappelle pas avoir jamais eu ce problème... intéressant... je
suppose que j'ai simplement paramétré la douchette dés le départ

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com



On 6/3/2014 8:21 AM, "Frédéric DEMILLY" wrote:
Bonjour,
Le problème avec les lecteurs de code barre est plus qu'un passage en
majuscule.
Il faut réellement émuler un CAPS-LOCK, sinon les chiffre 1,2,3... sont
remplacés pas &,é," . La douchette n'envoie pas de caractères, mais des
scans-code, qui sont interprétés comme des saisies sur le clavier.
Il faut soit paramétrer correctement le lecteur, soit "décoder" la saisie.
Le mieux étant évidemment de paramétrer la douchette.

Frédéric.

"Fabrice Harari" a écrit dans le message de groupe de discussion :
20141640b80ef4fa03be9222414f2c2b0aea@news.pcsoft.fr...

Bonjour

au lieu de faire ca, modifie ton champ de réception pour qu'il accepte
TOUS les caractères (et pas seulement les majuscules)...

Puis, dans ton traitement de la valeur, si tu ne veux vraiment que des
majuscules, tu fais un majuscule(ValeurCodeBarre)... Comme ca, pas de
configuration, pas de conflit, rien...

Cordialement

Membre enregistré
1 330 messages
Posté le 03 juin 2014 - 22:55
Salut Amine,

Bizarre, l'EnvoieTouche("{VERRMAJ}") fonctionne très bien chez moi :(

Sinon faut faire autrement:

Option 1: Passer directement par API
Charge WD API et fait une recherche sur GetKeyboardState & SetKeyboardState
Ces fonctions sont utilisées par la dll USER32

Option 2: Télécharger un petit EXE qui fais l'activation et le lancer
Voir par exemple: http://telecharger.tomsguide.fr/CapsLock,0301-3826.html

A+
Daryl

--
http://www.concept4u2.com
Membre enregistré
240 messages
Posté le 04 juin 2014 - 09:28
Ne peux-tu pas configurer la douchette en VERR MAJ automatique (certaines douchettes peuvent forcer elles-même la majuscule, c'est par exemple le cas des scanners sur pied Motorola) ?
Posté le 05 juin 2014 - 09:51
AMINE ( RAM ) a présenté l'énoncé suivant :
Bonjour;

Je suis en train de developper une application qui permet d'utiliser le code
à barre.
l'utilisateur doit taper la touche CAPS LOCK au debut de l'ouverture du
programme (juste 1 seule fois) pour pouvoir passer le ticket code a barre a
travers la douchette correctement.

J'ai essayé d'utiliser la commande
EnvoieTouche("{VERRMAJ}")


mais ca n'as pas marché chez quelques client (SON PC est de marque LENOVO)

Comment faire pour rendre la touche Majuscule toujours activé?

Merci d'avance.
Amine


bonjour,

voici un vieux code pour faire ce que vous souhaitez, j'ai
volontairement modifier l'adresse mail présent dans le code pour éviter
les spams

il faudra peut être l'adapter.

FONCTION fg_BasculeTouche(eTypeTouche = 20, eAction =-1, sErr="")
// Version 1.00 pour WD7 (WD55 voir la déclaration du tableau tTab)
// (c) Novembre 2002 Romain PETIT
(mailto:[xxxxxx------xxxxxx]@ifrance.com)
// sous licence WD-LIBRE (http://www.windevasso.org)
// But : Gestion des touches à bascule (NumLock, CapsLock et
ScrollLock)
// Activer, désactiver ou basculer
// Paramètres : - N° de touche virtuelle, entier
// (20 = CAPSLOCK (par défaut), 144 = NUMLOCK, 145 =
SCROLLLOCK)
// - Action à effectuer
// (-1 = basculer (par défaut), 0 = désactiver, 1=activer)
// Retour : entier, nouvel état de la touche (0 = inactive, 1=active)
// En cas d'erreur, la fonction renvoie -1 et le message
d'erreur
// peut être récupéré dans la chaine sErr passée par
référence.
// Notes : Pas besoin de modifier le type de certaines variables pour
WD55
// car elles sont passées par valeur.
// Il peut y avoir des problèmes sur certaines configuration
// spécifiques en W9x.
// Essayer d'augmenter le multitache dans ce cas.
// Références API:
//
http://msdn.microsoft.com/library/default.asp…
// Exemple :
// c est un entier
// pour c=1 a 10
// fg_BasculeTouche(20)
// multitache(3)
// fg_BasculeTouche(144)
// multitache(3)
// fg_BasculeTouche(145)
// multitache(3)
// FIN
eMapVK est un entier
bOk est un booléen = Faux
bShift est un booléen = Faux
tTab est un tableau fixe de 256 entiers sans signe sur 1 octet
//WD55 : tTab est un tableau de 256 entiers courts

//Vérification des paramètres
SI eTypeTouche<>20 ET eTypeTouche<>144 ET eTypeTouche<>145 ALORS
sErr = "Paramètre type de touche incorrect ("+eTypeTouche+"). "+...
"Les 3 types autorisés sont 20 (CapsLock), 144 (NumLock) et
145 (ScrollLock)."
RENVOYER -1
FIN
SI eAction<-1 OU eAction>1 ALORS
sErr = "Paramètre Action incorrect ("+eAction+"). "+...
"Les 3 actions autorisées sont -1 (inverser l'état), 0 (désactiver)
et 1 (activer)."
RENVOYER -1
FIN

//On récupère l'état actuel du clavier
SI PAS AppelDLL32("user32","GetKeyboardState",&tTab) ALORS
sErr = "Echec de l'API GetKeyboardState"
RENVOYER -1
FIN
SELON eAction
CAS -1 //bascule
SI eTypeTouche = 20 ET tTab[(eTypeTouche+1)]=1 ALORS
bShift=Vrai
SINON
bOk = Vrai
FIN
CAS 0 //etat inactif forcé
SI tTab[(eTypeTouche+1)]<>0
SI eTypeTouche=20 ALORS bShift = Vrai SINON bOk=Vrai
FIN
CAS 1 //etat actif forcé
SI tTab[(eTypeTouche+1)]=0 ALORS bOk = Vrai
FIN
SI bShift ALORS
SI SysVersionWindows(sysVersionPlateForme)<>"NT" ALORS
bOk = Vrai
SINON
//On simule l'appui et le relachement de la touche shift
//NB : pas de retour sur cette API
AppelDLL32("user32", "keybd_event", 16, eMapVK, 1, 0)
AppelDLL32("user32", "keybd_event", 16, eMapVK, 3, 0)
FIN
FIN
SI bOk ALORS
//On simule l'appui et le relachement sur la touche
// la touche est traduite en scan code (mapping)
// 0 si echec, mais ce paramètre n'a pas l'air utile...
eMapVK = AppelDLL32("user32", "MapVirtualKeyA", eTypeTouche,0)
AppelDLL32("user32", "keybd_event", eTypeTouche, eMapVK, 1, 0)
AppelDLL32("user32", "keybd_event", eTypeTouche, eMapVK, 3, 0)
//Pour Numlock en W9x, il faut aussi changer l'état du clavier
SI SysVersionWindows(sysVersionPlateForme)<>"NT" ET eTypeTouche =
144 ALORS
// On inverse l'état de la touche
tTab[(eTypeTouche+1)] = PAS (tTab[(eTypeTouche+1)])
SI PAS AppelDLL32("user32","SetKeyboardState",&tTab) ALORS
sErr = "Echec de l'API SetKeyboardState"
RENVOYER -1
FIN
FIN
FIN

// Multitache nécessaire avant de récupérer à nouveau
// l'état du clavier sinon la mise à jour
// n'a pas le temps de s'effectuer
// A voir s'il faut l'augmenter...
Multitache(1)
// On récupère l'état du clavier
SI PAS AppelDLL32("user32","GetKeyboardState",&tTab) ALORS
sErr = "Echec de l'API GetKeyboardState (2nd)"
RENVOYER -1
FIN
// On renvoie le nouvel état de la touche
RENVOYER tTab[(eTypeTouche+1)]

--
Cordialement JeAn-PhI