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

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:


Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

Neueste Artikel

Problemstellung: Ab MS-Office 2010 gibt es eine 32bit und eine 64bit Variante.Übernimmt man nun eine Datenbank nach 64bit und diese enthält API-Declare Anweisungenerhlt min in der Regel diese...
1.png2.png0.png5.png1.png0.png0.png
Heute64
Gestern102
Diese Woche278
Dieser Monat2524
Total1205100

  • IP: 54.161.71.87
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

3
Online

26. September 2018

Letzte Kommentare

  • Trusted Locations Manager

    Tommy Admin 13.07.2018 13:06
    RE: Trusted Locations Manager
    Hallo Matthias, aus Ermangelung einer 64bit Version kann ich das leider nicht prüfen. Tut mir leid. Gruss ...

    Weiterlesen...

     
  • Trusted Locations Manager

    Matthias 13.07.2018 06:48
    Funktioniert nicht
    Habe gerade den TL-Manager installiert. Nach dem Start sagt er mir, dass es kein Office erkennen ...

    Weiterlesen...