Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » System

Anwendungsdaten bzw. Home-Verzeichnis des Users (Windows, Linux)

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.RedakteurJojo 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 RedakteurJojo angelegt.
  • Die aktuellste Version wurde am 09.12.2011 von RedakteurJojo gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen