Ecrire des strings dans la base de registre...

Kywalh Messages postés 37 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 25 septembre 2009 - 22 mai 2002 à 19:25
dimitriusai Messages postés 76 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 7 mai 2009 - 6 févr. 2008 à 11:26
Bon, je commence a perdre patience. Pourquoi quand j'ecris un string dans la base de registre, j'ai "#f$" qui apparait au lieu d'un mot comme "coucou". Voici mon code si quelqu'un a une idée...


Public Function SetKeyValueStr(KeyRoot As Long, _
                            Path As String, _
                            KeyName As String, _
                            KeyVal As String) As Boolean

        Dim rc As Long                       ' Test ouverture clé
        '------------------------------------------------------------
        ' Ouverture de la clé sous HKEY_LOCAL_MACHINE...
        '------------------------------------------------------------
        rc = RegOpenKeyEx(KeyRoot, Path, 0, KEY_ALL_ACCESS, hKey) ' Ouverture Clé

        If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' Handle Erreur...

        

        '------------------------------------------------------------
        ' Ecriture clé...
        '------------------------------------------------------------

        rc = RegSetValueEx(hKey, KeyName, 0&, REG_SZ, KeyVal, Len(KeyVal))    ' Ecriture/Creation de la clé

        If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' Erreurs !

        SetKeyValueStr = True                                      ' Mise a vrai
        rc = RegCloseKey(hKey)                                  ' Ferme la clé du registre
        Exit Function                                           ' Fin
        
GetKeyError:    ' RAZ apres erreurs...
        KeyVal = ""                                             ' Valeur retournée si erreur
        SetKeyValueStr = False                                     ' Mise a faux
        rc = RegCloseKey(hKey)                                  ' Ferme la clé
End Function


puis dans une form:

a = "coucou"
rc = SetKeyValueStr(HKEY_LOCAL_MACHINE, "Software\VisExt\Config\PBX", "Modele", a)

Merci de votre aide

3 réponses

DragonDo Messages postés 93 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 22 juillet 2006
23 mai 2002 à 09:11
Tout d'abord place un Option Explicit (si ce n'est déjà fait) pour ne pas oublier de déclarer des variables. Ensuite passe ta variable KeyVal en utilisant ByVal (c'est ce que je fais et je n'ai pas de problème).
rc = RegSetValueEx(hKey, KeyName, 0&, REG_SZ, ByVal KeyVal, Len(KeyVal))

J'espère que sa fonctionne.
@+ :)
0
Kywalh Messages postés 37 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 25 septembre 2009
23 mai 2002 à 10:49
Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci !!!!
Ca marche ! T'es trop fort....tout le contraire de moi. Juste une petite question: combien de temps penses tu qu'il faut pour commencer a bien maitriser VB ? (G un projet a faire, g 3 mois pour ça et ça fait 2 semaine que je suis dessus (g deja un peu programmé en C et en Pascal)) ???
Merci encore !
Kywalh
0
dimitriusai Messages postés 76 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 7 mai 2009 1
6 févr. 2008 à 11:26
Bonjour,
je fais depuis peu un peu de vb,et j'essaye de créer une clé dans le registre et lui assigner une valeur.

J'ai donc essayé d'adapter le code de monsieur ci dessus.

Option

Strict
On
Option
Explicit
OnModule

Module1

Public
Function SetKeyValueStr(
ByVal KeyRoot
As
Long, _

ByVal Path
As
String, _

ByVal KeyName
As
String, _

ByVal KeyVal
As
String)
As
Boolean

Dim rc
As
Long
rc = RegOpenKeyEx(KeyRoot, Path, 0, KEY_ALL_ACCESS, hKey)

If (rc <> ERROR_SUCCESS)
Then
GoTo GetKeyError
rc = RegSetValueEx(hKey, KeyName, 0&, REG_SZ,
ByVal KeyVal, Len(KeyVal))
' Ecriture/Creation de la clé

If (rc <> ERROR_SUCCESS)
Then
GoTo GetKeyErrorSetKeyValueStr =

True
rc = RegCloseKey(hKey)

Exit
Function

GetKeyError:
KeyVal =
""

SetKeyValueStr =
False
rc = RegCloseKey(hKey)

End
Function

Sub Main()
a =
"test"
rc = SetKeyValueStr(HKEY_LOCAL_MACHINE,
"Software\gaim",
"Modele", a)

End
Sub
End
Module

Le problème est le suivant : le compiulateur me dit que un grand nombre de variable ne sont pas déclarée, alors que j'utilise bien l'option Explicit.

Si qqun savait m'éclairer
0
Rejoignez-nous