Internet explorer et les messageries

french_coff Messages postés 5 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 28 décembre 2004 - 24 déc. 2004 à 12:43
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 24 déc. 2004 à 13:16
Bonjour,

Je voudrais savoir s'il est possible de récupérer depuis VBA,
le nom de la messagerie utilisée actuellement sur un poste.
Existe il des commandes VBA,des variables d'environnement spéciales?
Ou bien dois-je passer par par la base de registre?

Merci de vos réponses

1 réponse

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
24 déc. 2004 à 13:16
Salut

Pour trouver le client messagerie, j'utilise les API RegOpenKeyEx et RegQueryValueEx, exemple :

Public Const ERROR_SUCCESS = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _
  ByVal hKey As Long, _
  ByVal lpSubKey As String, _
  ByVal ulOptions As Long, _
  ByVal samDesired As Long, _
  phkResult As Long) As Long

Declare Function RegQueryValueEx _
  Lib "advapi32" 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

Public Function GetDefaultMailClient() As String
Dim hKey As Long
Dim sKey As String
Dim buffer As String

  sKey = "Software\Clients\Mail"
  hKey = OpenRegKey(HKEY_LOCAL_MACHINE, sKey)
      
  If hKey <> 0 Then
   
    buffer = GetRegValue(hKey, vbNullString)
      
    RegCloseKey hKey
      
    GetDefaultMailClient = buffer

  End If
   
End Function

' ---------------------------------------------------------
' Cette fonction retourne la valeur demandée si elle existe
' ---------------------------------------------------------
Private Function GetRegValue(hSubKey As Long, sKeyName As String) As String
Dim lpValue As String   ' Valeur retournée
Dim lpcbData As Long    ' Longueur de la valeur retournée

  If hSubKey <> 0 Then ' Si la clé existe
   
    lpValue = Space$(260)
    lpcbData = Len(lpValue)
      
    ' Trouver la valeur demandée si elle existe
    If RegQueryValueEx _
        ( _
          hSubKey, _
          sKeyName, _
          0&, _
          0&, _
          ByVal lpValue, _
          lpcbData _
        ) = ERROR_SUCCESS Then
                                 
      GetRegValue = Split(lpValue, Chr$(0))(0)
         
    End If

  End If

End Function

' -------------------------------------------------------------------
' Cette fonction retourne le numéro de la clé demandée si elle existe
' -------------------------------------------------------------------
Private Function OpenRegKey(ByVal hKey As Long, ByVal lpSubKey As String) As Long
Dim hSubKey As Long

  If RegOpenKeyEx _
      ( _
        hKey, _
        lpSubKey, _
        0, _
        KEY_READ, _
        hSubKey _
      ) = ERROR_SUCCESS Then

    OpenRegKey = hSubKey

  End If

End Function


Tu mets tout ça dans un module et tu interroge comme ça :

Nom_messagerie = GetDefaultMailClient

Mais, attention, je n'ai pas testé avec tous les clients de messagerie qui existent.

Cordialement, CanisLupus
0
Rejoignez-nous