GetLocalDirName (Windows Vista +)
Verfasst: 27.04.2012 16:22
Diejenigen, die den Windows-Explorer nutzen, sind es wahrscheinlich gewohnt, deutsche Ordnernamen zu sehen,
aber das ist gar nicht so selbstverständlich, da diese gar nicht existieren
(zumindest unter Vista und 7)
Um jetzt den Orginalpfad in der Sprache des Benutzers zu übersetzen, ist diese kleine Procedure nützlich (hoffe ich mal
)
Achtung: Diese Pfade dienen nur der Ansicht, sind also für nichts anderes nutzbar.
aber das ist gar nicht so selbstverständlich, da diese gar nicht existieren

Um jetzt den Orginalpfad in der Sprache des Benutzers zu übersetzen, ist diese kleine Procedure nützlich (hoffe ich mal

Code: Alles auswählen
EnableExplicit
Procedure.s GetLocalDirName(Dir.s)
If Right(Dir, 1) <> "\" : Dir + "\" : EndIf
Protected KeyValue.s, expandedKey.s, ResDLL.s, ResValue.s, lpBuffer.s
Protected hDLL, i
Protected count = CountString(Dir, "\")
Protected tmpDir.s = StringField(Dir, 1, "\") + "\"
For i = 2 To count
KeyValue = Space(#MAX_PATH) : expandedKey = Space(#MAX_PATH) : lpBuffer = Space(#MAX_PATH)
tmpDir + StringField(Dir, i, "\") + "\"
If GetPrivateProfileString_(".ShellClassInfo", "LocalizedResourceName", 0, @KeyValue, #MAX_PATH, tmpDir + "desktop.ini")
If Left(KeyValue, 1) = "@" : KeyValue = Mid(KeyValue, 2) : EndIf
If ExpandEnvironmentStrings_(KeyValue, @expandedKey, #MAX_PATH)
ResDLL = StringField(expandedKey, 1, ",")
ResValue = StringField(expandedKey, 2, ",")
If Left(ResValue, 1) = "-" : ResValue = Mid(ResValue, 2) : EndIf
hDLL = LoadLibraryEx_(ResDLL, 0, #LOAD_LIBRARY_AS_DATAFILE)
If hDLL
If LoadString_(hDLL, Val(ResValue), @lpBuffer, #MAX_PATH)
Dir = ReplaceString(Dir, StringField(Dir, i, "\"), lpBuffer)
EndIf
FreeLibrary_(hDLL)
EndIf
EndIf
EndIf
Next
ProcedureReturn Dir
EndProcedure
Debug GetLocalDirName("c:\Program Files\")
Debug GetLocalDirName(GetHomeDirectory() + "Documents\")