begin process at 2012 02 16 22:52:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > LIRE ET ÉCRIRE DANS LA BASE DE REGISTRE FACILEMENT QUELQUESOIT L'UTILISATEUR

LIRE ET ÉCRIRE DANS LA BASE DE REGISTRE FACILEMENT QUELQUESOIT L'UTILISATEUR


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :09/05/2003 Date de mise à jour :09/05/2003 15:08:16 Vu :5 417

Auteur : facdaar

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Tout le monde connait la fonction GetSettings de VB6.
Elle pose un petit pb sous W2K : elle écrit sous une clé qui dépends de l'utilisateur. Si vous voulez que vos données soient communes à tous les utilisateurs, il faut écrire sous LOCAL_MACHINE et non USER.
Bref, voici une focntion GetSettingsEX() avec les même paramètre que GetSettings originale.

Remarque : si la clé n'existe pas, elle est créée automatiquement...

Source

  • Option Explicit
  • Private Const REG_SZ = 1 ' Unicode nul terminated string
  • Private Const REG_BINARY = 3 ' Free form binary
  • Private Const HKEY_LOCAL_MACHINE = &H80000002
  • Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  • Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  • Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
  • Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  • Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  • Private 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
  • Public Function GetSettigsEX(appName As String, section As String, key As String, Optional defValue As String)
  • Dim strpath As String, res As String
  • strpath = "SOFTWARE\" + appName + "\" + section
  • res = GetString(HKEY_LOCAL_MACHINE, strpath, key)
  • If res = "" And Not IsMissing(defValue) Then
  • SaveString HKEY_LOCAL_MACHINE, strpath, key, defValue
  • res = defValue
  • End If
  • GetSettigsEX = res
  • End Function
  • Private Function GetString(hKey As Long, strpath As String, strValue As String) As String
  • Dim Ret As Long
  • 'Open the key
  • RegOpenKey hKey, strpath, Ret
  • 'Get the key's content
  • GetString = RegQueryStringValue(Ret, strValue)
  • 'Close the key
  • RegCloseKey Ret
  • End Function
  • Private Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
  • Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
  • 'retrieve nformation about the key
  • lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
  • If lResult = 0 Then
  • If lValueType = REG_SZ Then
  • 'Create a buffer
  • strBuf = String(lDataBufSize, Chr$(0))
  • 'retrieve the key's content
  • lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
  • If lResult = 0 Then
  • 'Remove the unnecessary chr$(0)'s
  • RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
  • End If
  • ElseIf lValueType = REG_BINARY Then
  • Dim strData As Integer
  • 'retrieve the key's value
  • lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
  • If lResult = 0 Then
  • RegQueryStringValue = strData
  • End If
  • End If
  • End If
  • End Function
  • Private Sub SaveString(hKey As Long, strpath As String, strValue As String, strData As String)
  • Dim Ret
  • 'Create a new key
  • RegCreateKey hKey, strpath, Ret
  • 'Save a string to the key
  • RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
  • 'close the key
  • RegCloseKey Ret
  • End Sub
  • Private Sub SaveStringLong(hKey As Long, strpath As String, strValue As String, strData As String)
  • Dim Ret
  • 'Create a new key
  • RegCreateKey hKey, strpath, Ret
  • 'Set the key's value
  • RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
  • 'close the key
  • RegCloseKey Ret
  • End Sub
  • Private Sub DelSetting(hKey As Long, strpath As String, strValue As String)
  • Dim Ret
  • 'Create a new key
  • RegCreateKey hKey, strpath, Ret
  • 'Delete the key's value
  • RegDeleteValue Ret, strValue
  • 'close the key
  • RegCloseKey Ret
  • End Sub
Option Explicit

Private Const REG_SZ = 1 ' Unicode nul terminated string
Private Const REG_BINARY = 3 ' Free form binary
Private Const HKEY_LOCAL_MACHINE = &H80000002

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private 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

Public Function GetSettigsEX(appName As String, section As String, key As String, Optional defValue As String)
    Dim strpath As String, res As String
    
    strpath = "SOFTWARE\" + appName + "\" + section
    res = GetString(HKEY_LOCAL_MACHINE, strpath, key)
    
    If res = "" And Not IsMissing(defValue) Then
        SaveString HKEY_LOCAL_MACHINE, strpath, key, defValue
        res = defValue
    End If
    
    GetSettigsEX = res
    
End Function

Private Function GetString(hKey As Long, strpath As String, strValue As String) As String
    Dim Ret As Long
    'Open the key
    RegOpenKey hKey, strpath, Ret
    'Get the key's content
    GetString = RegQueryStringValue(Ret, strValue)
    'Close the key
    RegCloseKey Ret
End Function

Private Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String) As String
    Dim lResult As Long, lValueType As Long, strBuf As String, lDataBufSize As Long
    'retrieve nformation about the key
    lResult = RegQueryValueEx(hKey, strValueName, 0, lValueType, ByVal 0, lDataBufSize)
    If lResult = 0 Then
        If lValueType = REG_SZ Then
            'Create a buffer
            strBuf = String(lDataBufSize, Chr$(0))
            'retrieve the key's content
            lResult = RegQueryValueEx(hKey, strValueName, 0, 0, ByVal strBuf, lDataBufSize)
            If lResult = 0 Then
                'Remove the unnecessary chr$(0)'s
                RegQueryStringValue = Left$(strBuf, InStr(1, strBuf, Chr$(0)) - 1)
            End If
        ElseIf lValueType = REG_BINARY Then
            Dim strData As Integer
            'retrieve the key's value
            lResult = RegQueryValueEx(hKey, strValueName, 0, 0, strData, lDataBufSize)
            If lResult = 0 Then
                RegQueryStringValue = strData
            End If
        End If
    End If
End Function

Private Sub SaveString(hKey As Long, strpath As String, strValue As String, strData As String)
    Dim Ret
    'Create a new key
    RegCreateKey hKey, strpath, Ret
    'Save a string to the key
    RegSetValueEx Ret, strValue, 0, REG_SZ, ByVal strData, Len(strData)
    'close the key
    RegCloseKey Ret
End Sub

Private Sub SaveStringLong(hKey As Long, strpath As String, strValue As String, strData As String)
    Dim Ret
    'Create a new key
    RegCreateKey hKey, strpath, Ret
    'Set the key's value
    RegSetValueEx Ret, strValue, 0, REG_BINARY, CByte(strData), 4
    'close the key
    RegCloseKey Ret
End Sub

Private Sub DelSetting(hKey As Long, strpath As String, strValue As String)
    Dim Ret
    'Create a new key
    RegCreateKey hKey, strpath, Ret
    'Delete the key's value
    RegDeleteValue Ret, strValue
    'close the key
    RegCloseKey Ret
End Sub


 Conclusion

Mettre ce code dans un module(.bas), et ajouter ce module à votre projet...


 Sources du même auteur

Source avec Zip GESTION DE PILE FIFO DANS UNE CLASSE (SANS RECORDSET)
Source avec Zip SERVEUR TELNET (MULTI-CLIENTS)
Source avec Zip RÉCUPÉRATION DES ARGUMENTS D'UN ÉXÉCUTABLE LANCÉ EN LIGNE DE...
Source avec Zip CRÉER ET LIRE UN FICHIER ZIP DANS VB

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

Commentaires et avis

Commentaire de blabla le 09/05/2003 16:49:01

Mouais ,j'aime pas quand ya pas de zip.

Commentaire de fifipil909 le 10/05/2003 11:53:38

un zip serais le bien venus !!

Commentaire de VBbigineure le 15/05/2003 10:39:27

Moi je préfère quand y'en a pas, on peut lire le code et s'en inspirer sans trop perdre de temps.
Sinon c'est très bien, ca fonctionne sous W2000 mais pas NT4... qui m'interessait. :(

Commentaire de facdaar le 16/05/2003 08:46:03

En effet, je n'ai essayé ça que sous W2K. Je suis qd même surpris que cela ne fonctionne pas sous NT4,vu que c'est le même noyau !
Désolé !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 0,437 sec (4)

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