1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| '-----------------------------------------------------------------------------------------------
' Conversion d'un chemin en transformant les variables d'environnement en valeurs absolues
'-----------------------------------------------------------------------------------------------
Private Function ConvertPathName(ByVal sNatPath As String) As String
Dim myRegExp As New RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Dim l As Long
Dim lpBuffer As String
' Par défaut
ConvertPathName = sNatPath
'On utilise les expressions régulières pour isoler une éventuelle variable DOS
myRegExp.IgnoreCase = True
myRegExp.Global = True
' On cherche une variable d'environnement caractérisée par le délimiteur "%"
myRegExp.Pattern = "%([A-Z]*)%"
Set myMatches = myRegExp.Execute(sNatPath)
' Si le chemin contient des variables d'environnement
If myMatches.Count > 0 Then
For Each myMatch In myMatches
lpBuffer = String(512, 0)
l = GetEnvironmentVariable(Mid(myMatch.Value, 2, Len(myMatch.Value) - 2), lpBuffer, 512)
If l <> 0 Then
lpBuffer = Left(lpBuffer, l)
myRegExp.Pattern = myMatch.Value
sNatPath = myRegExp.Replace(sNatPath, lpBuffer)
End If
Next
ConvertPathName = sNatPath
End If
End Function |
Partager