Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ecrire une valeur hexa

13 réponses
Avatar
scraper
bonsoir à tous

je souhaiterais écrire une valeur hexa dans le Registre ...

En fait l'entrée est du type REG_BINARY, mais son contenu est du texte ??

du genre Toto ...

j'arrive à la lire sans problème, à l'exporter sous la même forme que ce que
je la vois, (ici, sauf erreur, ça serait 54 6F 74 6F) dans un fichier
texte, mais ensuite, si je veux la recréer ...

j'ai cherché un peu partout sur le net, et j'avoue être perplexe ??

merci de tout renseignement



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

10 réponses

1 2
Avatar
Gloops
Bonjour,

Je viens d'exporter une valeur REG_BINARY dans un fichier .reg et de
regarder dans un éditeur de texte la tête qu'il a, et ça a confirmé ce
que je pensais : les nombres sont séparés par des virgules.

Donc, on ne met pas 54 6F 74 6F
mais 54, 6F, 74, 6F
en n'oubliant pas hex: au début.

Et si il y a une coupure de ligne, une barre inverse derrière la virgule
avant la coupure de ligne :

20,20,00,00,00,04,06,4d,53,46,54,0d,00,00,01,5b,80,4d,4e,56,53,00,0c,8c,0f,

6f,0f,0a,20,5b,81,2b,4d,4e,56,53,10,4f,53,59,53,10,41,43,4f,4e,08,4c,49,44,

Certes, ça mériterait bien d'être confirmé par un coup d'oeil à la doc
des fonctions d'écriture dans le registre ...
______________________________________
scraper a écrit, le 18/10/2004 01:03 :
bonsoir à tous

je souhaiterais écrire une valeur hexa dans le Registre ...

En fait l'entrée est du type REG_BINARY, mais son contenu est du texte ??

du genre Toto ...

j'arrive à la lire sans problème, à l'exporter sous la même forme que ce que
je la vois, (ici, sauf erreur, ça serait 54 6F 74 6F) dans un fichier
texte, mais ensuite, si je veux la recréer ...

j'ai cherché un peu partout sur le net, et j'avoue être perplexe ??

merci de tout renseignement





Avatar
scraper
Bonjour Gloops
(dans news:417349a7$0$8688$)
tu nous disais :

Bonjour,

Je viens d'exporter une valeur REG_BINARY dans un fichier .reg et de
regarder dans un éditeur de texte la tête qu'il a, et ça a confirmé ce
que je pensais : les nombres sont séparés par des virgules.



merci de ta réponse .... mais en fait, je dois écrire cette valeur dans le
Registre, depuis un fichier texte !

bien entendu, je peux mettre en forme ma variable ... mais comment ??

disons que je lis dan sun fichier texte cette valeur :54 6F 74 6F
et que je voudrais à partir de ça, arriver à écrire la valeur Toto dans une
entrée Reg_Binary du registre, par API :-)

voila, si tu as des idées ;-)

merci


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
Patrice Henrio
Je ne comprends pas très bien pourquoi 54 6F 74 6F ça fait Toto ?
Ah si c'est du codage ascii
Alors il suffit de transformer le code Hexa en nombre puis le nombre en
caractère.

Function HexaDecimal(s As String) As Integer
HexaDecimal = ChiffreHexa(Left$(s, 1)) * 16 + ChiffreHexa(Right$(s, 1))
End Function

Function ChiffreHexa(s As String) As Integer
Select Case s
Case "0" To "9": ChiffreHexa = s
Case "A" To "F": ChiffreHexa = Asc(s) - 55
End Select
End Function

La fonction qui transforme un code ascii en lettre est chr

Donc

s="54 6F 74 6F"

While s<>""
Mot=Mot & chr(HexaDecimal(Lefts$(s,2)))
s=Mid$(s,3)

wend
ça doit marcher mais j'ai pas testé (fait en deux minutes avant le film ...)

"scraper" a écrit dans le message de news:
%
Bonjour Gloops
(dans news:417349a7$0$8688$)
tu nous disais :

Bonjour,

Je viens d'exporter une valeur REG_BINARY dans un fichier .reg et de
regarder dans un éditeur de texte la tête qu'il a, et ça a confirmé ce
que je pensais : les nombres sont séparés par des virgules.



merci de ta réponse .... mais en fait, je dois écrire cette valeur dans le
Registre, depuis un fichier texte !

bien entendu, je peux mettre en forme ma variable ... mais comment ??

disons que je lis dan sun fichier texte cette valeur :54 6F 74 6F
et que je voudrais à partir de ça, arriver à écrire la valeur Toto dans
une
entrée Reg_Binary du registre, par API :-)

voila, si tu as des idées ;-)

merci


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper




Avatar
scraper
Bonjour Patrice Henrio
(dans news:OYn%)
tu nous disais :

Je ne comprends pas très bien pourquoi 54 6F 74 6F ça fait Toto ?
Ah si c'est du codage ascii
Alors il suffit de transformer le code Hexa en nombre puis le nombre
en caractère.




bonjour, et merci de t'intéresser à mon cas :-)


humm ... je crois que je me suis mal exprimé ... désolé !

en fait, plus simplement, je sauvegarde dans un fichier texte, une valeur
binaire du Registre, qui est de la forme 54 6F 74 6F par exemple (en
clair, si tu édites la clé, ça correspond à Toto) ...
et ensuite, depuis cette valeur 54 6F 74 6F que je lis dans le fichier
texte, je veux recréer une clé binaire qui aura pour valeur ... 54 6F 74 6F
(donc, Toto en clair), tout simplement

je sais pas si je me fais bien comprendre ?
en fait, je veux recréer la clé à l'identique ... :-)
et je sais pas, avec tous ces codes à la kon, lequel utiliser, pour que ma
fonction RegSetValueEx me recrée une clé binaire 54 6F 74 6F ??

merci de ton aide :-)


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
Patrice Henrio
Est-ce de cela dont tu veux parler ?

Fonction RegSetValueEx

Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal Reserved As Long, _
ByVal dwType As Long, _
lpData As Any, _
ByVal cbData As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction est à utiliser pour affecter une nouvelle valeur à une clé
que l'on aura ouvert ou crée au préalable.
hKey est le handle retourné par la fonction d'ouverture ou de création.
lpValueName est le nom de la valeur que l'on veut affecter. Pour les valeurs
"(Défaut)" il faut donner une chaîne vide en paramêtre.
lpReserved, réservé, à mettre à 0.
lpType est le type de donnée qui sera définie. Les valeurs possibles sont
données dans le tableau ci-dessous.
lpData est la variable dans laquelle est mise la nouvelle valeur à ajouter
(ou à remplacer).
lpcbData est la longueur du buffer lpData.
Si l'opération a réussi, la fonction retourne 0, sinon il y a eu échec de la
fonction.



Constante Valeur Définition
REG_NONE 0 Non défini.
REG_SZ 1 Chaîne terminée par un caractère nul.
REG_BINARY 3 Valeur binaire.
REG_DWORD 4 Mot sur 4 octets.
REG_DWORD_BIG_ENDIAN 5 Mot sur 4 octets dont le poids fort est à
l'adresse inférieure.
REG_LINK 6 Définition d'un lien.
REG_MULTI_SZ 7 Ensemble de chaînes terminées par un caractère nul. La
fin est signalée par deux caractères nuls.

Pas d'exemple disponible...

Si oui as-tu regardé l'exemple donné avce l'API guide ?

Salut

Autre question : je crois que tu t'y connais pas mal en IE. Comment peut-on
disposer de deux IE pour utiliser deux proxy sur le même ordinateur. J'ai
un serveur me permettant d'accéder à Internet

par ADSL et un autre pour accéder à un site sécurisé qui ne doit pas passer
par ce même serveur.

(je suis bien conscient que la question n'est pas sur le bon forum ...)
Avatar
scraper
Bonjour Patrice Henrio
(dans news:)
tu nous disais :

Est-ce de cela dont tu veux parler ?

Fonction RegSetValueEx



comme je te le disais sur mon précédent mail, oui c'est bien ça ....et ....
non, j'ai pas trouvé d'exemple sur API Guide qui explique quelle valeur
passer à cette fonction pour que la clé créée soit une reg_Binary avec du
texte dedans !

et j'ai pas mal cherché sur le net ... en vain !

si qqu'un connait une URL ou une soluce, soyez sympa, ça fait 2 jours que
je suis bloqué ;-)


merci

Autre question : je crois que tu t'y connais pas mal en IE. Comment
peut-on disposer de deux IE pour utiliser deux proxy sur le même
ordinateur. J'ai un serveur me permettant d'accéder à Internet



ben non, moi c'est plutôt OE ;-)

par ADSL et un autre pour accéder à un site sécurisé qui ne doit pas
passer par ce même serveur.

(je suis bien conscient que la question n'est pas sur le bon forum
...)



peut être la poser sur le forum de IE 6 ??

y'a des pointures là bas (Jack, Lolo etc ... :-)

ils pourront certainement te répondre ....

moi, je ne sais même que vaguement ce qu'est un proxy ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
Gloops
Ah, oui, quand tu auras tout dit ...
Parce que pour moi un fichier .reg est un fichier texte, donc c'est vrai
que je ne cherchais pas plus loin (d'ailleurs ce serait une piste à
creuser, mettre en forme un fichier .reg et l'exécuter).

Je me suis cassé le nez aussi là-dessus, pourtant j'ai l'impression
qu'il s'agit d'une question de cours toute bête ...

Le cinquième argument s'appelle lpData.
ça veut dire qu'il faut lui passer quoi ? Un pointeur long ?
ça se joue comment ça en VB déjà ? Je crois me rappeler qu'en VB on ne
se casse pas la tête avec ça, mais ça peut peut-être mettre quelqu'un
sur la piste.

Après on a cbData, ça ne me parle pas trop, mais il semble qu'il
s'agisse de la longueur de la chaîne.

A noter que la fonction proposée par API-Guide s'en sort très bien pour
écrire le premier caractère, c'est après que ça se gâte.

J'ai essayé avec un tableau, je me suis vu répondre type de variable
ByRef incorrect.
______________________________________
scraper a écrit, le 18/10/2004 23:06 :

Bonjour Patrice Henrio
(dans news:)
tu nous disais :


Est-ce de cela dont tu veux parler ?

Fonction RegSetValueEx




comme je te le disais sur mon précédent mail, oui c'est bien ça ....et ....
non, j'ai pas trouvé d'exemple sur API Guide qui explique quelle valeur
passer à cette fonction pour que la clé créée soit une reg_Binary avec du
texte dedans !

et j'ai pas mal cherché sur le net ... en vain !

si qqu'un connait une URL ou une soluce, soyez sympa, ça fait 2 jours que
je suis bloqué ;-)


merci


Autre question : je crois que tu t'y connais pas mal en IE. Comment
peut-on disposer de deux IE pour utiliser deux proxy sur le même
ordinateur. J'ai un serveur me permettant d'accéder à Internet




ben non, moi c'est plutôt OE ;-)

par ADSL et un autre pour accéder à un site sécurisé qui ne doit pas
passer par ce même serveur.

(je suis bien conscient que la question n'est pas sur le bon forum
...)




peut être la poser sur le forum de IE 6 ??

y'a des pointures là bas (Jack, Lolo etc ... :-)

ils pourront certainement te répondre ....

moi, je ne sais même que vaguement ce qu'est un proxy ;-)





Avatar
scraper
Bonjour scraper
(dans news:%)
tu nous disais :

et j'ai pas mal cherché sur le net ... en vain !



bon, en fait j'ai trouvé ... :-)

j'avais pas si bien cherché que ça ... je suis tombé sur un thread qui m'a
bien mis sur la voie


------

sValue as String, sNewVal as String
i as Integer
bVal() as String
bBinaryData() as Byte

sValue = "546F746F " 'ma valeur Toto ;-)
'Formate les données ansi
For i = 0 To (Len(sValue) - 1) Step 2
sNewVal = sNewVal & "&H" & Mid$(sValue, 1 + i, 2) & ","
Next
'Stocke dans un tableau les données transformées en nombres
bVal = Split(sNewVal, ",")
For i = 0 To UBound(bVal) - 1
ReDim Preserve bBinaryData(i) As Byte
bBinaryData(i) = CLng(bVal(i))
Next
RegCreateKeyEx key, ipSubkey, 0, vbNullString, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, SECURITY_ATTRIBUTES, hkey, ret
RegSetValueEx hkey, "MonEntrée", 0&, 3, bBinaryData(0), Len(bBinaryData(0))
RegCloseKey hkey

----------

voila à peu près ce que ça donne .... :-)

en fait, il suffisait de stocker la chaine (remise en forme) dans un tableau
et de faire pointer la valeur à écrire par RegCreateKeyEx vers ce tableau
...

bon, je suis pas certainq ue ce code soit "propre" ... au moins, il
fonctionne ?

si tu vois des konn****, n'hésite pas ;-)

merci





--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
Gloops
Salut,

Ah, en somme, il aurait suffi que je dorme, et ça baignait :)

Je passais le nom du tableau, c'est parce que je ne mettais pas d'indice
que je me faisais jeter. Mettre l'indice 0 pour avoir tout le tableau,
c'est vrai que ça ne s'est pas tricoté tout seul à cette heure-là, dans
ma si petite tête.
______________________________________
scraper a écrit, le 19/10/2004 01:09 :

Bonjour scraper
(dans news:%)
tu nous disais :


et j'ai pas mal cherché sur le net ... en vain !




bon, en fait j'ai trouvé ... :-)

j'avais pas si bien cherché que ça ... je suis tombé sur un thread qui m'a
bien mis sur la voie


------

sValue as String, sNewVal as String
i as Integer
bVal() as String
bBinaryData() as Byte

sValue = "546F746F " 'ma valeur Toto ;-)
'Formate les données ansi
For i = 0 To (Len(sValue) - 1) Step 2
sNewVal = sNewVal & "&H" & Mid$(sValue, 1 + i, 2) & ","
Next
'Stocke dans un tableau les données transformées en nombres
bVal = Split(sNewVal, ",")
For i = 0 To UBound(bVal) - 1
ReDim Preserve bBinaryData(i) As Byte
bBinaryData(i) = CLng(bVal(i))
Next
RegCreateKeyEx key, ipSubkey, 0, vbNullString, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, SECURITY_ATTRIBUTES, hkey, ret
RegSetValueEx hkey, "MonEntrée", 0&, 3, bBinaryData(0), Len(bBinaryData(0))
RegCloseKey hkey

----------

voila à peu près ce que ça donne .... :-)

en fait, il suffisait de stocker la chaine (remise en forme) dans un tableau
et de faire pointer la valeur à écrire par RegCreateKeyEx vers ce tableau
...

bon, je suis pas certainq ue ce code soit "propre" ... au moins, il
fonctionne ?

si tu vois des konn****, n'hésite pas ;-)

merci







Avatar
Patrice Henrio
C'est la façon traditionnelle de passer des tableaux (donc aussi des
chaînes) avce les API : premier élément du tableau et nombre d'élément.
Pour les chaînes il peut y avoir des complications car elles ne sont pa
scodées de la même façon en VB et en C.
Voici l'exemple que j'avais écrit dans Histoire (ça doit dire quelque chose
à Scraper)

Public Sub Enregistre(Version As String, path As String)
Dim Ret As Long
RegCreateKey HKEY_CURRENT_USER, "SoftwareHistoire", Ret
RegSetValueEx Ret, "Version", 0, REG_SZ, ByVal Version, Len(Version)
RegSetValueEx Ret, "Chemin", 0, REG_SZ, ByVal Chemin, Len(Chemin)
RegCloseKey Ret
End Sub

Donc à priori, il faut bien (si on veut éviter les pb) retraduire une suite
de codes en string, ce qui permet d'ignorer les différentes façon de coder
des chaines de caractères.


"Gloops" a écrit dans le message de news:
41744e9c$0$31725$
Salut,

Ah, en somme, il aurait suffi que je dorme, et ça baignait :)

Je passais le nom du tableau, c'est parce que je ne mettais pas d'indice
que je me faisais jeter. Mettre l'indice 0 pour avoir tout le tableau,
c'est vrai que ça ne s'est pas tricoté tout seul à cette heure-là, dans ma
si petite tête.
______________________________________
scraper a écrit, le 19/10/2004 01:09 :

Bonjour scraper
(dans news:%)
tu nous disais :


et j'ai pas mal cherché sur le net ... en vain !




bon, en fait j'ai trouvé ... :-)

j'avais pas si bien cherché que ça ... je suis tombé sur un thread qui
m'a
bien mis sur la voie


------

sValue as String, sNewVal as String
i as Integer
bVal() as String
bBinaryData() as Byte

sValue = "546F746F " 'ma valeur Toto ;-)
'Formate les données ansi
For i = 0 To (Len(sValue) - 1) Step 2
sNewVal = sNewVal & "&H" & Mid$(sValue, 1 + i, 2) & ","
Next
'Stocke dans un tableau les données transformées en nombres
bVal = Split(sNewVal, ",")
For i = 0 To UBound(bVal) - 1
ReDim Preserve bBinaryData(i) As Byte
bBinaryData(i) = CLng(bVal(i))
Next
RegCreateKeyEx key, ipSubkey, 0, vbNullString, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, SECURITY_ATTRIBUTES, hkey, ret
RegSetValueEx hkey, "MonEntrée", 0&, 3, bBinaryData(0),
Len(bBinaryData(0))
RegCloseKey hkey

----------

voila à peu près ce que ça donne .... :-)

en fait, il suffisait de stocker la chaine (remise en forme) dans un
tableau
et de faire pointer la valeur à écrire par RegCreateKeyEx vers ce tableau
...

bon, je suis pas certainq ue ce code soit "propre" ... au moins, il
fonctionne ?

si tu vois des konn****, n'hésite pas ;-)

merci










1 2