Wer unter Windows Vista oder 7 mit dem Windows-Explorer arbeitet, ist es
wahrscheinlich gewohnt, deutschnamige Ordner vorzufinden. Diese sind
aber nicht Existent und für den Programmierer nicht nutzbar, außer zur
Anzeige.
Hier eine kleine Proc, die aus den realen Ordnernamen die lokalisierten Namen
erzeugt. Aber Achtung: Diese sind nur zu Anzeigezwecke von nutzen!
Code
'
' (c) Thomas (ts-soft) Schulz für Paules-PC-Forum:
' http://www.paules-pc-forum.de/forum/xprofan/
'
$H Windows.ph
Def &LOAD_LIBRARY_AS_DATAFILE $2
Proc GetLocalDirName
Parameters Dir$
Case Right$(Dir$, 1) <> "\" : Dir$ = Dir$ + "\"
Declare KeyValue$, expandedKey$, ResDLL$, ResValue$, lpBuffer$
Declare hDLL&
Var count& = Len(Dir$, "\") - 1
Var tmpDir$ = SubStr$(Dir$, 1, "\") + "\"
WhileLoop 2, count&
KeyValue$ = Space$(~MAX_PATH) : expandedKey$ = Space$(~MAX_PATH) : lpBuffer$ = Space$(~MAX_PATH)
tmpDir$ = tmpDir$ + SubStr$(Dir$, &Loop, "\") + "\"
If ~GetPrivateProfileString(".ShellClassInfo", "LocalizedResourceName", 0, Addr(KeyValue$), ~MAX_PATH, tmpDir$ + "desktop.ini")
Case Left$(KeyValue$, 1) = "@" : KeyValue$ = Mid$(KeyValue$, 2, Len(KeyValue$) -1)
If ~ExpandEnvironmentStrings(KeyValue$, Addr(expandedKey$), ~MAX_PATH)
ResDLL$ = SubStr$(expandedKey$, 1, ",")
ResValue$ = SubStr$(expandedKey$, 2, ",")
Case Left$(ResValue$, 1) = "-" : ResValue$ = Mid$(ResValue$, 2, Len(ResValue$) - 1)
hDLL& = ~LoadLibraryEx(ResDLL$, 0, &LOAD_LIBRARY_AS_DATAFILE)
If hDLL&
If ~LoadString(hDLL&, Val(ResValue$), Addr(lpBuffer$), ~MAX_PATH)
Dir$ = Translate$(Dir$, SubStr$(Dir$, &Loop, "\"), Trim$(lpBuffer$))
EndIf
~FreeLibrary(hDLL&)
EndIf
EndIf
EndIf
EndWhile
Return Dir$
EndProc
CLS
Print GetLocalDirName("c:\\Program Files\\")
Declare HomeDir$
HomeDir$ = GetEnv$("HOMEDRIVE") + GetEnv$("HOMEPATH") + "\"
Print GetLocalDirName(HomeDir$ + "Documents\\")
WaitKey
Alles anzeigen