Page 1 sur 1

Varible environnement Windows

MessagePublié: 27 Jan 2010 à 14:57
par stloje
J'essaie d'accéder aux variables d'environnement Windows en utilisant la commande suivante

Code : Tout sélectionner
Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (Byval lpName As String, lpBuffer As String) As Long

Dim envVariableValue as string
Dim lVarValue as Long

lVarValue = GetEnvironmentVariable ("AppData", envVariableValue)



J'ai la bonne longueur de chaîne dans la variable lVarValue, mais celle devant contenir la valeur de retour est vide (envVariableValue).

Quelqu'un a déjà fait quelque chose de similaire?

MessagePublié: 27 Jan 2010 à 14:59
par Michael DELIQUE
salut

une version sans API

Code : Tout sélectionner
Public Function WindowsGetVariable(wVariable As String) As String
   'cette fonction renvois le contnue d'une variable windows ex %USERNAME%
   
   'Déclaration variable
   Dim vrShell As Variant
'   Dim vrSysEnv As Variant
   
   On Error Goto ErreurHandle
   
   If Trim(wVariable) = "" Then
      WindowsGetVariable = ""
      Exit Function
   End If
   
   If Session Is Nothing Then
      Set Session = New NotesSession
   End If
   
   If Session.NotesBuildVersion<190 Then
      'inférieur à la version R6
      Set vrShell = CreateObject("WScript.Shell")
      WindowsGetVariable = vrShell.ExpandEnvironmentStrings(wVariable)
      
   'si ça ne marche pas utiliser cette version du code
'   Set vrSysEnv = vrShell.Environment("SYSTEM")
'   WindowsGetVariable = vrSysEnv(wVariable)
      
      Set vrShell = Nothing
'   Set  vrSysEnv = Nothing
      
   Else
      WindowsGetVariable = Environ$(wVariable)
   End If
   
   Exit Function
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   WindowsGetVariable = ""
   Exit Function
End Function


Code : Tout sélectionner
Public Sub WindowsSetVariable(wVariable As String, wValeur As String)
      'Déclaration variable
   Dim vrShell As Variant
   
   On Error Goto ErreurHandle
   
   If Trim(wVariable) = "" Then
      Exit Sub
   End If
   
'   If Trim(wValeur) = "" Then
'      Exit Sub
'   End If
   
   Set vrShell = CreateObject("WScript.Shell")
   vrShell.Environment("PROCESS").Item(wVariable) = wValeur
   
   Set vrShell = Nothing
   Exit Sub
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Exit Sub
End Sub

MessagePublié: 27 Jan 2010 à 15:03
par stloje
Merci Michael, j'essaie cela tout de suite après que mon Notes se soit remit d'un plantage!

MessagePublié: 27 Jan 2010 à 15:14
par stloje
Ca fonctionne!

Je ne connaissais pas la fonction "Environ$". Dire que ça fait 4h que je me torture les méninges :twisted:

MessagePublié: 27 Jan 2010 à 15:53
par nemrod93
:D :D :D
Moi non plus je ne connaissais pas ENVIRON$
C'est bien cool!

Merci :D :D :D

Cdlt

Alain

MessagePublié: 03 Fév 2010 à 09:55
par Steph_
bonjour

Ça m'a l'air bien pratique tout ça
il n'y aurait pas quelque part une liste de toutes les fonctions possibles avec environ ?