1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

Nur für 32Bit Office Versionen

Problemstellung:

Wie kann ich spezielle Verzeichnisse eines Systems ermitteln?
z.B. Pfad zu den "Eigenen Dateien" oder Pfad zum "Startmenü"

Folgenden Code in öffentliches Modul kopieren:

Public Declare Function SHGetSpecialFolderLocation _
    Lib "shell32.dll" ( _
    ByVal hwndOwner As Long, _
    ByVal nFolder As Long, _
    pidl As tpItemIDList) As Long
    
Public Declare Function SHGetPathFromIDList _
    Lib "shell32.dll" ( _
    ByVal pidl As Long, _
    ByVal pszPath As String) As Long
    
Public Declare Function CoTaskMemFree _
    Lib "ole32.dll" (ByRef hMem As Long) As Long
    
Public Type tpShortItemId
    cb As Long
    abID As Byte
End Type

Public Type tpItemIDList
    mkid As tpShortItemId
End Type

Public Const CSIDL_CONTROLS = &H3                   'Ermittelt das Verzeichnis "Systemsteuerung"
Public Const CSIDL_COOKIES = &H21                   'Ermittelt das Verzeichnis "Cookies"
Public Const CSIDL_COMMON_ADMINTOOLS = &H2F         'Ermittelt das Verzeichnis "Administartions Tools für alle Benutzer"
Public Const CSIDL_COMMON_ALTSTARTUP = &H1E         'Ermittelt das Verzeichnis "Alternatives Startverzeichnis für alle Benutzer"
Public Const CSIDL_COMMON_APPDATA = &H23            'Ermittelt das Verzeichnis "AppData für alle Benutzer"
Public Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19   'Ermittelt das Verzeichnis "Desktop für alle Benutzer"
Public Const CSIDL_COMMON_DOCUMENTS = &H2E          'Ermittelt das Verzeichnis "Dokumente für alle Benutzer"
Public Const CSIDL_COMMON_FAVORITES = &H1F          'Ermittelt das Verzeichnis "Favoriten für alle Benutzer"
Public Const CSIDL_COMMON_MUSIC = &O35              'Ermittelt das Verzeichnis "Meine Musik für alle Benutzer"
Public Const CSIDL_COMMON_PICTURES = &O36           'Ermittelt das Verzeichnis "Meine Bilder für alle Benutzer"
Public Const CSIDL_COMMON_PROGRAMS = &O17           'Ermittelt das Verzeichnis "Startmenü/Programme für alle Benutzer"
Public Const CSIDL_COMMON_STARTMENU = &H16          'Ermittelt das Verzeichnis "Startmenü für alle Benutzer"
Public Const CSIDL_COMMON_STARTUP = &H18            'Ermittelt das Verzeichnis "Startmenü/Autostart für alle Benutzer"
Public Const CSIDL_COMMON_TEMPLATES = &H2D          'Ermittelt das Verzeichnis "Templates für alle Benutzer"
Public Const CSIDL_COMMON_VIDEO = &O37              'Ermittelt das Verzeichnis "Meine Videos für alle Benutzer"
Public Const CSIDL_DESKTOP = &H0                    'Ermittelt das Verzeichnis "Desktop"
Public Const CSIDL_DESKTOPDIRECTORY = &H10          'Ermittelt das Verzeichnis "Desktop-Verzeichnis"
Public Const CSIDL_FAVORITES = &H6                  'Ermittelt das Verzeichnis "Favoriten"
Public Const CSIDL_FONTS = &H14                     'Ermittelt das Verzeichnis "Fonts"
Public Const CSIDL_HISTORY = &H22                   'Ermittelt das Verzeichnis "History"
Public Const CSIDL_INTERNET_CACHE = &H20            'Ermittelt das Verzeichnis "Internet Cache"
Public Const CSIDL_INTERNET = &H1                   'Ermittelt das Verzeichnis "Internet"
Public Const CSIDL_DRIVES = &H11                    'Ermittelt das Verzeichnis "Arbeitsplatz"
Public Const CSIDL_PERSONAL = &H5                   'Ermittelt das Verzeichnis "Eigene Dokumente"
Public Const CSIDL_NETWORK = &H12                   'Ermittelt das Verzeichnis "Gesamtes Netzwerk"
Public Const CSIDL_NETHOOD = &H13                   'Ermittelt das Verzeichnis "Netzwerkumgebung"
Public Const CSIDL_PRINTERS = &H4                   'Ermittelt das Verzeichnis "Drucker"
Public Const CSIDL_PRINTHOOD = &H1B                 'Ermittelt das Verzeichnis "Drucker-Verzeichnis"
Public Const CSIDL_PROGRAMS = &H2                   'Ermittelt das Verzeichnis "Startmenü/Programme"
Public Const CSIDL_RECENT = &H8                     'Ermittelt das Verzeichnis "Startmenü/Dokumente"
Public Const CSIDL_BITBUCKET = &HA                  'Ermittelt das Verzeichnis "Papierkorb"
Public Const CSIDL_SENDTO = &H9                     'Ermittelt das Verzeichnis "Senden zu"
Public Const CSIDL_STARTMENU = &HB                  'Ermittelt das Verzeichnis "Startmenü"
Public Const CSIDL_STARTUP = &H7                    'Ermittelt das Verzeichnis "Autostart"
Public Const CSIDL_TEMPLATES = &H15                 'Ermittelt das Verzeichnis "Templates"

Public Enum enSpecialFolders
    spControlPanel = CSIDL_CONTROLS
    spCookies = CSIDL_COOKIES
    spCommonAdminTools = CSIDL_COMMON_ADMINTOOLS
    spCommonAltStartup = CSIDL_COMMON_ALTSTARTUP
    spCommonAppData = CSIDL_COMMON_APPDATA
    spCommonDesktopDirectory = CSIDL_COMMON_DESKTOPDIRECTORY
    spCommonDocuments = CSIDL_COMMON_DOCUMENTS
    spCommonFavorites = CSIDL_COMMON_FAVORITES
    spCommonMusic = CSIDL_COMMON_MUSIC
    spCommonPictures = CSIDL_COMMON_PICTURES
    spCommonPrograms = CSIDL_COMMON_PROGRAMS
    spCommonStartmenu = CSIDL_COMMON_STARTMENU
    spCommonStartup = CSIDL_COMMON_STARTUP
    spCommonTemplates = CSIDL_COMMON_TEMPLATES
    spCommonVideo = CSIDL_COMMON_VIDEO
    spDesktopUser = CSIDL_DESKTOP
    spDesktopDir = CSIDL_DESKTOPDIRECTORY
    spFavorites = CSIDL_FAVORITES
    spFonts = CSIDL_FONTS
    spHistory = CSIDL_HISTORY
    spInternetCache = CSIDL_INTERNET_CACHE
    spInternetVirtualFolder = CSIDL_INTERNET
    spMyComputerDrives = CSIDL_DRIVES
    spMyDocuments = CSIDL_PERSONAL
    spNetworkRoot = CSIDL_NETWORK
    spNetHood = CSIDL_NETHOOD
    spPrinters = CSIDL_PRINTERS
    spPrintHood = CSIDL_PRINTHOOD
    spStartMenuPrograms = CSIDL_PROGRAMS
    spRecent = CSIDL_RECENT
    spRecycleBin = CSIDL_BITBUCKET
    spSendTo = CSIDL_SENDTO
    spStartMenu = CSIDL_STARTMENU
    spStartup = CSIDL_STARTUP
    spTemplates = CSIDL_TEMPLATES
End Enum

Public Function GetSpecialFolder( _
    lngSpecialFolder As enSpecialFolders) As String
    Dim lngRet As Long
    Dim strPath As String
    Dim typIDL As tpItemIDList
    lngRet = SHGetSpecialFolderLocation(0, _
        lngSpecialFolder, typIDL)
    If lngRet = 0 Then
        strPath = Space$(512)
        lngRet = SHGetPathFromIDList( _
            ByVal typIDL.mkid.cb, ByVal strPath)
        Call CoTaskMemFree(typIDL.mkid.cb)
        If lngRet Then
            GetSpecialFolder = Left(strPath, _
                InStr(strPath, Chr(0)) - 1) & "\"
        End If
    End If
End Function

Aufruf z.B. für das Cookies Verzeichnis:

Me.Text0 = GetSpecialFolder(spCookies)

Ergebnis:


You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool...
1.png5.png8.png5.png2.png9.png7.png
Heute42
Gestern496
Diese Woche1455
Dieser Monat5171
Total1585297

  • IP: 18.221.85.33
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

2
Online

19. April 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...