Code-Beispiel
Anwendungsdaten bzw. Home-Verzeichnis des Users (Windows, Linux)
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | Jojo | 09.12.2011 |
Windows-Entwicklern wird empfohlen, veränderliche Programmdaten wie INI-Dateien im Order "Anwendungsdaten" des jeweiligen Nutzers abzulegen. Unter Linux verhält sich das ganz ähnlich: Programmeinstellungen werden in /home/Benutzername/ abgelegt. Wie kommt man an diese Pfade?
Der folgende Sourcecode sucht je nach Betriebssystem nach dem passenden Pfad. Unter Linux wird einfach die Umgebungsvariable $HOME benutzt, unter Windows muss leider ein wenig mehr Arbeit investiert werden, um verschiedene Windowsversionen zu unterstützen. Es werden nacheinander verschiedene Spezialordner durchprobiert, um den passenden zu finden. Die zu testenden Ordner kannst du selbst festlegen und vertauschen (falls du z.B. erst in "All Users" und dann erst im persönlichen Ordner nachschauen möchtest).
' Hier drin wird das ermittelte Verzeichnis stehen.
Dim homepath As String
#If Defined(__FB_WIN32__)
#Include Once "win/shlobj.bi"
If(Environ("APPDATA") <> "") Then
' Einfacher Fall: Umgebungsvariable gesetzt (neue Windows-Versionen)
homepath = Environ("APPDATA")
Else
' Alte Windows-Versionen: Benutze Shell32.dll
' Username\AppData[\Roaming], My Documents und Documents and Settings\Username und All Users\AppData[\Roaming] werden in dieser Reihenfolge gesucht.
Dim searchPaths(0 To 3) As Integer = {CSIDL_APPDATA, CSIDL_PERSONAL, CSIDL_PROFILE, CSIDL_COMMON_APPDATA}
For i As Integer = LBound(searchPaths) To UBound(searchPaths)
Dim idl As LPITEMIDLIST
If(SHGetSpecialFolderLocation(0, searchPaths(i), @idl) = 0) Then
Dim buffer As String * 512
buffer = Space(512)
If(SHGetPathFromIDList(idl, buffer)) Then
homepath = Left(buffer, InStr(buffer, Chr(0)) - 1)
Exit For
EndIf
End If
Next
EndIf
#ElseIf Defined(__FB_LINUX__)
homepath = Environ("HOME")
#Else
#Error Plattform nicht unterstützt
#EndIf
Print "home-Verzeichnis: " & homepath
Sleep
Jetzt kannst du an diese Variable z.B. deinen Programmnamen dranhängen und dein eigenes Anwendungsverzeichnis erstellen, z.B.
if homepath = "" then homepath = "." ' kein pfad gesetzt
homepath &= "/.meintollesprogramm" ' Punkt vor dem Namen wird gern benutzt... Unter Linux :)
MkDir homepath
Mit wenigen Änderungen im Quelltext kannst du dir alle möglichen Spezialordner unter Windows anzeigen lassen. Beachte aber, dass nicht alle Ordner in allen Versionen vorhanden sind.
For i As Integer = 0 To 255
Dim idl As LPITEMIDLIST
If SHGetSpecialFolderLocation(0, i, @idl) = 0 Then
Dim buffer As String * 512
buffer = Space(512)
If SHGetPathFromIDList(idl, buffer) Then
buffer = Left(buffer, InStr(buffer, Chr(0)) - 1)
Print Hex(i) & " = " & buffer
EndIf
End If
Next
Zusätzliche Informationen und Funktionen |
- Das Code-Beispiel wurde am 20.12.2008 von Jojo angelegt.
- Die aktuellste Version wurde am 09.12.2011 von Jojo gespeichert.
|
|