|
Started by guest, Apr., 25 2006 4:01 PM - 6 replies |
| |
| | | |
|
| |
Posted on April, 25 2006 - 4:01 PM |
J'aimerai passer en majuscule afin que les touches numériques de la rangée au dessus de "azerty..." soit accessible car on a mis en place une application sur des portables donc le pavé numérique est inexistant. Pour simplifier la saisie, il faudrait donc que l'utilisateur n'aie pas à jongler avec la touche CAPSLOCK toutes les 30sec.
Voici mon code :
W_E_EtatTouche est un entier W_B_EtatActif est un booléen W_E_EtatTouche = ETBinaire(AppelDLL32("USER32","GetKeyState",20),1) SI PAS W_E_EtatTouche ALORS EnvoieTouche("{VERRMAJ}",Handle(MoiMême)) FIN
Le problème c'est que le code s'exécute correctement mais lorsque je saisie des données, cela reste en minuscule. Qu'ai-je oublié ?
Merci de votre aide |
| |
| |
| | | |
|
| | |
| |
Posted on April, 25 2006 - 4:33 PM |
bonjour ça ne serait pas plus simple de mettre le masque de saisie en MAJSCULE ?
cordialement,
pp |
| |
| |
| | | |
|
| | |
| |
Posted on April, 25 2006 - 5:08 PM |
lorsque l'on met le masque de saisie en majuscule, les caractère spéciaux situés sur les touches 123456789.. apparaissent en majuscule et je n'ai donc pas les chiffres.
Merci quand même |
| |
| |
| | | |
|
| | |
| |
Posted on April, 25 2006 - 5:10 PM |
Bonjour
L'utilisation de EnvoieTouche et VERRMAJ ne semble pas conforme à l'utilisation que tu veux en faire ('est vrai que c'est pas evident dans la doc).
Par exemple si tu écris EnvoieTouche("{VERRMAJ}ab",Handle(Saisie1)) Ca mettra bien "ABC" en majuscule dans le champ Saisie1 mais le Cap_Lock ne sera plus actif ensuite
Pour activer le clavier en majuscule utilise plutôt le code suivant
VK_CAPITAL est un entier sur 1 octet = 0x14 API("USER32","keybd_event",VK_CAPITAL,0,1,0)
Cela dit mettre un masque de saisie Majuscule+Chiffres me semble plus approprié dasn ton exemple.
A+
-- Francis MOREL |
| |
| |
| | | |
|
| | |
| |
Posted on April, 25 2006 - 6:26 PM |
merci pour le bout de code, ça marche super. Pour ce qui est du masque de saisie, ça ne marche pas j'ai déjà testé. Les chiffres situés entre les touches de fontions F1,F2... et azerty... ne sont pas pris en compte et ça mettra les caractères spéciaux en maj. |
| |
| |
| | | |
|
| | |
| |
Posted on April, 25 2006 - 7:10 PM |
ceci est super, pour passer en MAJ, ça marche très bien. En revanche, maintenant, je veux que le mode MAJ disparaisse à la sortie du champ. Mais je n'ai pas du tout comprendre avec les API et je n'arrive pas à remettre le mode minuscule.
Merci |
| |
| |
| | | |
|
| | |
| |
Posted on April, 26 2006 - 1:58 PM |
Bonjour,
En fait dans ce cas c'est à peine plus compliqué. Voici une fonction issue DE MSDN (que j'ai légerement modifiée) qui sapplique aussi a d'autres VK que Cap_Lock
Dans ton cas tu fais SetMajLock(VK_CAPITAL,Vrai) pour mettre en majuscule et SetMajLock(VK_CAPITAL,Faux) pour suprimer le mode majuscule.
Pour info dans certains cas je suis tombe sur des cas quei ne marchaient pas.
Bon dev
// VK_CODE [in] : Virtual key code (0 a 255) // bState [in] : Vrai pour mettre ON, faux pour mettre OFF PROCEDURE SetMajLock(VK_code est un entier sur 1 ,bState est un booléen = Vrai)
KEYEVENTF_EXTENDEDKEY est un entier sur 2 = 0x0001 KEYEVENTF_KEYUP est un entier sur 2 = 0x0002
keyState est un tableau de 256 entiers sans signe sur 1
API("User32.dll","GetKeyboardState",&keyState)
bLock est un booléen =modulo(keyState[VK_code+1],2) // Etat actuel
SI (bState _ET_ PAS bLock) _OU_ (PAS bState _ET_ bLock) ALORS // Simulate a key press API("User32.dll","keybd_event",VK_code,0x45,KEYEVENTF_EXTENDEDKEY,0 ) API("User32.dll","keybd_event",VK_code,0x45,KEYEVENTF_KEYUP,0 ) SINON // Simulate a key release API("User32.dll","keybd_event",VK_code,0x45,... OUBinaire(KEYEVENTF_EXTENDEDKEY,KEYEVENTF_KEYUP),0 ) END
Pour info, le VK_code+1 dans keyState[VK_code+1] résulte du fait que les tableaux C commencent à l'indice 0.
PS : Le second param de la fonction ","keybd_event", ici (0x45) n'est pas utilisé, d'ou la valeur 0 précédemment, le 0x45 résulte de l'exemple qu site MSDN qui m'a servi de base et de la traduction bête et diciplinée que j'en ai faite à l'époque.
A+
-- Francis MOREL |
| |
| |
| | | |
|
| | | | |
| | |
|