Nous sommes actuellement le 09 Juil 2026, 22:57

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 
Auteur Message
MessagePublié: 25 Août 2002, 12:09 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Mars 2002, 00:32
Message(s) : 613
Localisation : Montréal
Comment on fait dans VBA pour demander à ce qu'il lise la partie «Data» d'un «String Value».

J'essaie d'extraire cette info du registre et l'afficher dans une fenêtre.

Voici la clé du registre et le «String Value» que je veux lire:

La clé : HKEY_CURRENT_USER\Control Panel\International
Le «String Value» : sShortDate

Le «Data» rattaché à ce «String» dans mon ordi correspond à dd.MM.yyyy ce qui veut dire que le format court de la date est 25.08.2002.

Je veux que VBA aille chercher cette info et l'affiche dans un «Label» afin que l'utilisateur n'aie pas à chercher à quoi correspond le format court de la date sur son ordinateur.

Merci.

_________________
EinsteinBQAT, Membre des forums Micro.Info
Étudiant à temps plein à l'Université de Montréal en doctorat en médecine dentaire (DMD).
PowerBook 17" WS- 1,5 GHz PowerPC G4 - 2 GB DDR SDRAM - Mac OS X 10.4.x (Tiger) - ATI Mobility Radeon 9700 128 MB DDR
iPod 3G - 20 GB


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 25 Août 2002, 13:03 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Personellement j'utilise les API pour lire le registre

http://www.allapi.net
http://www.mvps.org/vbnet

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 26 Août 2002, 09:33 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 08 Jan 2002, 11:08
Message(s) : 575
En plus clair !!! :D


Code :
Option Explicit

    Private m_lngRetVal As Long
   
    Private Const REG_NONE As Long = 0
    Private Const REG_SZ As Long = 1
    Private Const REG_EXPAND_SZ As Long = 2
    Private Const REG_BINARY As Long = 3
    Private Const REG_DWORD As Long = 4
    Private Const REG_DWORD_LITTLE_ENDIAN As Long = 4
    Private Const REG_DWORD_BIG_ENDIAN As Long = 5
    Private Const REG_LINK As Long = 6
    Private Const REG_MULTI_SZ As Long = 7
    Private Const REG_RESOURCE_LIST As Long = 8
    Private Const REG_FULL_RESOURCE_DESCRIPTOR As Long = 9
    Private Const REG_RESOURCE_REQUIREMENTS_LIST As Long = 10
   
    Private Const KEY_QUERY_VALUE As Long = &H1
    Private Const KEY_SET_VALUE As Long = &H2
    Private Const KEY_CREATE_SUB_KEY As Long = &H4
    Private Const KEY_ENUMERATE_SUB_KEYS As Long = &H8
    Private Const KEY_NOTIFY As Long = &H10
    Private Const KEY_CREATE_LINK As Long = &H20
    Private Const KEY_ALL_ACCESS As Long = &H3F
   
    Const HKEY_CLASSES_ROOT As Long = &H80000000
    Const HKEY_CURRENT_USER As Long = &H80000001
    Const HKEY_LOCAL_MACHINE As Long = &H80000002
    Const HKEY_USERS As Long = &H80000003
    Const HKEY_PERFORMANCE_DATA As Long = &H80000004
    Const HKEY_CURRENT_CONFIG As Long = &H80000005
    Const HKEY_DYN_DATA As Long = &H80000006
   
    Private Const ERROR_SUCCESS As Long = 0
    Private Const ERROR_ACCESS_DENIED As Long = 5
    Private Const ERROR_NO_MORE_ITEMS As Long = 259
   
    Private Const REG_OPTION_NON_VOLATILE As Long = 0
    Private Const REG_OPTION_VOLATILE As Long = &H1

    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal lngRootKey As Long) As Long
   
    Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
              (ByVal lngRootKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
   
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
              (ByVal lngRootKey As Long, ByVal lpSubKey As String) As Long
   
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
              (ByVal lngRootKey As Long, ByVal lpValueName As String) As Long
   
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
              (ByVal lngRootKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
   
    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
              (ByVal lngRootKey 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 lngRootKey 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 regQuery_A_Key(ByVal lngRootKey As Long, _
                               ByVal strRegKeyPath As String, _
                               ByVal strRegSubKey As String) As Variant
   
    Dim intPosition As Integer
    Dim lngKeyHandle As Long
    Dim lngDataType As Long
    Dim lngBufferSize As Long
    Dim lngBuffer As Long
    Dim strBuffer As String

    lngKeyHandle = 0
    lngBufferSize = 0
   
    m_lngRetVal = RegOpenKey(lngRootKey, strRegKeyPath, lngKeyHandle)
   
    If lngKeyHandle = 0 Then
        regQuery_A_Key = ""
        m_lngRetVal = RegCloseKey(lngKeyHandle)
        Exit Function
    End If
   
    m_lngRetVal = RegQueryValueEx(lngKeyHandle, strRegSubKey, 0&, _
               lngDataType, ByVal 0&, lngBufferSize)
   
    If lngKeyHandle = 0 Then
        regQuery_A_Key = ""
        m_lngRetVal = RegCloseKey(lngKeyHandle)
        Exit Function
    End If
   
    Select Case lngDataType
        Case REG_SZ:
       
            strBuffer = Space(lngBufferSize)
           
            m_lngRetVal = RegQueryValueEx(lngKeyHandle, strRegSubKey, 0&, 0&, _
                                   ByVal strBuffer, lngBufferSize)
           
           
            If m_lngRetVal <> ERROR_SUCCESS Then
                regQuery_A_Key = ""
            Else
               
                intPosition = InStr(1, strBuffer, Chr(0))
                If intPosition > 0 Then
                    regQuery_A_Key = Left(strBuffer, intPosition - 1)
                Else
                    regQuery_A_Key = strBuffer
                End If
            End If
       
        Case REG_DWORD:
            m_lngRetVal = RegQueryValueEx(lngKeyHandle, strRegSubKey, 0&, lngDataType, _
                                   lngBuffer, 4&)
           
            If m_lngRetVal <> ERROR_SUCCESS Then
                regQuery_A_Key = ""
            Else
                regQuery_A_Key = lngBuffer
            End If
       
        Case Else:
            regQuery_A_Key = ""
           
    End Select
   
    m_lngRetVal = RegCloseKey(lngKeyHandle)
 
End Function



Private Sub cmdRegistryRead_Click()
    Dim lngRootKey As Long
    Dim strKeyQuery As Variant
   
    lngRootKey = HKEY_CURRENT_USER
   
    strKeyQuery = regQuery_A_Key(lngRootKey, "Control Panel\International", "sShortDate")
   
    MsgBox strKeyQuery


End Sub


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Août 2002, 08:30 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 17 Mars 2002, 00:32
Message(s) : 613
Localisation : Montréal
Merci!!! Ça fonctionne à merveille! Merci encore! :)

_________________
EinsteinBQAT, Membre des forums Micro.Info
Étudiant à temps plein à l'Université de Montréal en doctorat en médecine dentaire (DMD).
PowerBook 17" WS- 1,5 GHz PowerPC G4 - 2 GB DDR SDRAM - Mac OS X 10.4.x (Tiger) - ATI Mobility Radeon 9700 128 MB DDR
iPod 3G - 20 GB


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Août 2002, 13:05 
Hors-ligne
Fidèle
Fidèle
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 22:14
Message(s) : 790
Localisation : Extrémité sud-ouest de Lévis
C'est fou comme c'est compliqué d'accéder au registre, même avec un RAD comme Visual Basic.


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Août 2002, 14:07 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
René Rhéaume a écrit:
C'est fou comme c'est compliqué d'accéder au registre, même avec un RAD comme Visual Basic.


Il est possible d'utiliser WMI (Windows Management Intrumentation), mais au début c'est quasiment plus compliqué qu'utiliser les api! Whatever, pour aller lire dans le registre local c'est pas vraiment mieux, mais lorsque l'on veut accéder au registre d'une autre machine c'est essentiel, enfin je crois...

Avec .Net c'est beaucoup plus simple, il y a une classe pour le registre

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 27 Août 2002, 20:39 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 06 Jan 2002, 23:07
Message(s) : 2329
Jump a écrit:
Avec .Net c'est beaucoup plus simple, il y a une classe pour le registre


Exact et c'est vraiment pratique!

Je me sers plus du registre depuis ce temps-là.

_________________
Patrick Day, Modérateur des forums Arts & Spectacles et Sports & Loisirs


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 7 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site