Advertisement
5_2007-2008 Files/ File Controls/ Input/ Output #185114

VB-friendly SpecialFolderPath Function

This is a VB-friendly interpretation of a reliable method for accessing the myriad of Windows special folder paths in their resolved states. If you need to know the full path to the Desktop Folder, Startup Folder, and many many others, this function will quickly get you there.

AI

Riepilogo AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Codice sorgente
original-source
Private Type SHELLITEMID
  cb As Long
  abID As Byte
End Type
Private Type ITEMIDLIST
  mkid As SHELLITEMID
End Type
Public Enum SpecialFolderTypes
  sftCDBurningCache = 59&
  sftCommonAdminTools = 47&
  sftCommonApplicationData = 35&
  sftCommonDesktop = 25&
  sftCommonDocumentTemplates = 45&
  sftCommonFavorites = 31&
  sftCommonMyDocuments = 46&
  sftCommonMyPictures = 54&
  sftCommonProgramFiles = 43&
  sftCommonStartMenu = 22&
  sftCommonStartMenuPrograms = 23&
  sftCommonStartup = 24&
  sftFonts = 20&
  sftProgramFiles = 38&
  sftSystem32Folder = 41&
  sftSystemFolder = 37&
  sftThemes = 56&
  sftUserAdminTools = 48&
  sftUserApplicationData = 26&
  sftUserCookies = 33&
  sftUserDesktop = 16&
  sftUserDocumentTemplates = 21&
  sftUserFavorites = 6&
  sftUserHistory = 34&
  sftUserLocalApplicationData = 28&
  sftUserMyDocuments = 5&
  sftUserMyMusic = 13&
  sftUserMyPictures = 39&
  sftUserNetHood = 19&
  sftUserPrintHood = 27&
  sftUserProfileFolder = 40&
  sftUserRecentDocuments = 8&
  sftUserSendTo = 9&
  sftUserStartMenu = 11&
  sftUserStartMenuPrograms = 2&
  sftUserStartup = 7&
  sftUserTempInternetFiles = 32&
  sftWindowsFolder = 36&
End Enum
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Public Function SpecialFolderPath(ByVal lngFolderType As SpecialFolderTypes) As String
  Dim strPath As String
  Dim IDL As ITEMIDLIST
  SpecialFolderPath = ""
  If SHGetSpecialFolderLocation(0&, lngFolderType, IDL) = 0& Then
    strPath = Space$(MAX_PATH)
    If SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal strPath) Then
      SpecialFolderPath = Left$(strPath, InStr(strPath, vbNullChar) - 1&) & "\"
    End If
  End If
End Function
Commenti originali (3)
Recuperato da Wayback Machine