Seite 1 von 1

GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 16:22
von ts-soft
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 :mrgreen: (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 :wink: )

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\") 
Achtung: Diese Pfade dienen nur der Ansicht, sind also für nichts anderes nutzbar.

Re: GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 18:16
von RSBasic
:allright:

Re: GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 20:43
von ts-soft
Vielleicht ist das ja was, für die WinAPI library?

Gruß
Thomas

Re: GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 20:45
von RSBasic
Jupp, habs bereits in meinem "Neue API-Sources"-Ordner eingefügt. :wink:

Re: GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 20:49
von ts-soft
Schön, hab das Beispiel noch leicht angepasst, so das keiner mehr Thomas heißen muss <)

Re: GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 20:50
von RSBasic
Gut, danke, hab die Datei aktualisiert. :allright:

Re: GetLocalDirName (Windows Vista +)

Verfasst: 27.04.2012 23:27
von Falko
Das ist ja praktisch :allright:
Danke, Thomas