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:
Weiterlesen...