begin process at 2012 02 14 03:36:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Trucs & Astuces

 > 

Comment stocker une valeur hexa dans une variable


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment stocker une valeur hexa dans une variable

jeudi 18 juin 2009 à 15:21:35 | Comment stocker une valeur hexa dans une variable

rol64

Salut,
Langage VB6

Mon problème est le suivant:

Je voudrais stocker des valeurs hexa correspondant aux caractères numériques (0,1,2....9) dans un tableau indexé pour pouvoir les utilisées dans la fonction API keybd_event sous la forme &H30 (valeur hexa correspondant à "0" par exemple).

Le but étant d'établir un tableau à deux dimensions, avec une ligne contenant les caractères de type string ("0","1"...) et une deuxième contenant la valeur hexa associée. Ainsi je voudrais pouvoir analyser une chaine de caractère avec la fonction mid() et simuler des évènements claviers pour retaper la chaine de caractère dans une textebox. C'est un moyen de contourner l'impossibilité à faire un coller par simulation d'un "CTRL+V".
 
Seulement voila, je ne sais pas sous quel format enregistrer mes valeurs hexa dans le tableau.
J'ai essayé ca:

Dim tab(10,10) As Long
 tab(0,0) = &H30 ' correspond à la valeur hexa du caractère '0'
Call keybd_event (Hex(tab(0,0), 0, 0, 0)
Call keybd_event(Hex(tab(0,0), 0, KEYEVENTF_KEYUP,0)

Mais il ne se passe rien à l'exécution (test appliqué au bloc note)

Normalement on déclare en constante en début de programme et on appelle de la manière suivante:
'Declaration en dehors de la procédure
Const VK_0 = &H30

'Simulation clavier dans la procédure
Call keybd_event VK_0 , 0, 0, 0)
Call keybd_event(VK_0 0, KEYEVENTF_KEYUP,0)

Donc que dois je faire pour enregistrer les valeurs des constantes dans un tableau pour que la valeur contenue soit vue par keybd_event comme lorsqu'elle lit une constante contenant une valeur hexa?

Merci de votre aide

jeudi 18 juin 2009 à 18:13:54 | Re : Comment stocker une valeur hexa dans une variable

Galain

Membre Club
Regarde la dé laration correcte de l'Api : le caractère doit être de type Byte
Private Declare Sub
keybd_event Lib "user32" Alias "keybd_event" ( ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Prenons le cas du caractère "0" : son code Ascii est 48 en décimal ou &H30 en héxadécimal
Pour simuler la frappe d'un 0 utilise directement asc("0") . Si tu veux simuler le caractère "B" par exemple utilise asc("B")

De plus le fonction Hex transforme une variable numérique en variable chaine héxadéciamale : donc Call keybd_event (Hex(tab(0,0), 0, 0, 0) est incorrect

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
jeudi 18 juin 2009 à 18:15:04 | Re : Comment stocker une valeur hexa dans une variable

Galain

Membre Club
Regarde la déclaration correcte de l'Api : le caractère doit être de type Byte : le "c" a sauté à la frappe

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
lundi 22 juin 2009 à 10:11:04 | Re : Comment stocker une valeur hexa dans une variable

rol64

Salut Galain,

Tout d'abord, je te remercie pour tes réponses. En fait j'ai essayé avec les valeurs décimal et hexadécimal pour  "0".... Mais c'est bizarre parce que ca m'affiche le caractère "à". J'ai donc pris ma constante VK_0 dans la laquelle est enregistrée la valeur hexadécimale &H30 et je le l'ai lue avec msgbox(VK_0): cela m'affiche la valeur décimale 91!!! Puis j'ai essayé
Call keybd_event(91,0,0,0) et comme par magie ca m'affiche "0"!??? Je pensais pourtant que le code ascii était un code normalisé!!! C'est quand même bizarre!!!
Je pense que cela confirme ta citation:

"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."


lundi 22 juin 2009 à 21:36:17 | Re : Comment stocker une valeur hexa dans une variable

Galain

Membre Club
Réponse acceptée !
Attention : il ne faut pas confondre le code d'une touche du clavier et le code Ascii que celle-ci renvoie
sur ton clavier tu as bien 2 touches avec le chiffre "0" : elles renvoient toutes les 2 le même code Ascii ( en mettant Shift pour le "0" qui n'est pas dans le pavé numérique) mais les codes touches clavier sont différents : 48 et 96 en décimal ( 96 pour le 0 du pavé numérique et 48 pour l'autre)

Call keybd_event(X,0,0,0) travaille avec les codes des touches et non les codes Ascii : X est le code d'une tpuche clavier et non un code Ascii

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
mardi 23 juin 2009 à 08:50:44 | Re : Comment stocker une valeur hexa dans une variable

rol64

Ah Ok!!!! Ca explique tout! En effet j'avais même pas fais attention au fait que le"à" se trouve sur la même touche que le "0".... C'est donc le touche clavier!
Encore merci pour ta réponse!!!
Cordialement,
Roland



Cette discussion est classée dans : valeur, tableau, event, hexa, keybd


Répondre à ce message

Sujets en rapport avec ce message

vba passage de tableau par VALEUR [ par greg ] Hello impossible to pass arrays by Value in VBA,say I wanna do it anyway... Then how?Is there anything like the C++ "const" keyword?Any trick?Many tha Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? [ par Moi ] Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? recuperer la valeur d'un octet [ par Kernox ] Ben voila je voudrai faire editeur hexa pour ensuite faire un algo de compressionseulement le hic c que j'arrive pas a faire des conversion hexadecima pb avec combo [ par Jingle ] Bonjourje fais mon premier prog en vb et j'ai un peu du mal....en fait j'ai un pb avec mes comboje veux leur affecter une valeur en hexa (que l'utilis puissance 4 tableau de valeur [ par lataupeben ] j'ai besoin d'un conseilj'ai un tableaudim tab(7,6) as string*1avec des valeur qui sonyt r j ou riensi on se represente le tableau en 2Dil faudrait qu Toujours Urgent§§ Valeur mAXI et MINI dans un tableau [ par kate1 ] Bonjour, J'ai besoin d'aide car je n'y arrive plus!!!J'ai construit un tableau MSHFlexgrid de plusieurs colonnes avec un nombre de ligne variable et u comment créer un tableau... [ par mike ] Voilà en fait je voudrais créer un tableau dans lequel une valeur tirée au hasard ne revienne plus ensuite! Par exemple si je fais un programme de lot comment trouver la valeur MIN et la valeur MAX dans un tableau [ par Jeronimo ] J'ai un tableau intNombre(1 to 25). Premièrement, les valeurs du tableau sont initiées par un combobox. Ensuite, je dois afficher la valeur la plus é Pb avec keybd_event [ par Albionbzh ] Bonjour !J'ai un problème avec l'api keybd_event, je voudrai pouvoir envoyer une lettre en majuscule.J'ai essayé d'envoyer la touche 'Capital' puis ap Comment convertir une valeur string en hexa et/ou binaire avec un script vbs [ par link134 ] Bonjour,Je suis à la recherche d'un script vbs qui permet de convertir une chaine de caractère (type "VISUAL") en sa valeur Hexa et/ou binaire.Quelqu'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,961 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales