VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



VB-friendly SpecialFolderPath Function

by Kerry B. Rogers (2 Submissions)
Category: Files/File Controls/Input/Output
Compatability: Visual Basic 5.0
Difficulty: Intermediate
Date Added: Wed 3rd February 2021
Rating: (3 Votes)

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.

Rate VB-friendly SpecialFolderPath Function

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

Download this snippet    Add to My Saved Code

VB-friendly SpecialFolderPath Function Comments

No comments have been posted about VB-friendly SpecialFolderPath Function. Why not be the first to post a comment about VB-friendly SpecialFolderPath Function.

Post your comment

Subject:
Message:
0/1000 characters