Quantcast
Channel: VBForums - CodeBank - Visual Basic 6 and earlier
Viewing all articles
Browse latest Browse all 1449

GetSpecial Folder

$
0
0
Here is a simple dropin mod I made for getting special folder locations more quickly anyway hope you find it usfull.

WinSpecialFolder.bas

Code:

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
  (ByVal pidl As Long, ByVal pszPath As String) As Long
 
Private Declare Function SHGetSpecialFolderLocation Lib _
  "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder _
  As Long, pidl As ITEMIDLIST) As Long

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type

Private Type ITEMIDLIST
    mkid As SHITEMID
End Type

Public Enum SP_ID
    CSIDL_ADMINTOOLS = 48
    CSIDL_ALTSTARTUP = 29
    CSIDL_APPDATA = 26
    CSIDL_BITBUCKET = 10
    CSIDL_CDBURN_AREA = 59
    CSIDL_COMMON_ADMINTOOLS = 47
    CSIDL_COMMON_ALTSTARTUP = 30
    CSIDL_COMMON_APPDATA = 35
    CSIDL_COMMON_DESKTOPDIRECTORY = 25
    CSIDL_COMMON_DOCUMENTS = 46
    CSIDL_COMMON_FAVORITES = 31
    CSIDL_COMMON_MUSIC = 53
    CSIDL_COMMON_PICTURES = 54
    CSIDL_COMMON_PROGRAMS = 23
    CSIDL_COMMON_STARTMENU = 22
    CSIDL_COMMON_STARTUP = 24
    CSIDL_COMMON_TEMPLATES = 45
    CSIDL_COMMON_VIDEO = 55
    CSIDL_COMPUTERSNEARME = 61
    CSIDL_CONNECTIONS = 49
    CSIDL_CONTROLS = 3
    CSIDL_COOKIES = 33
    CSIDL_DESKTOP = 0
    CSIDL_DESKTOPDIRECTORY = 16
    CSIDL_DRIVES = 17
    CSIDL_FAVORITES = 6
    CSIDL_FONTS = 20
    CSIDL_HISTORY = 34
    CSIDL_INTERNET = 1
    CSIDL_INTERNET_CACHE = 32
    CSIDL_LOCAL_APPDATA = 28
    CSIDL_MYDOCUMENTS = 5
    CSIDL_MYMUSIC = 13
    CSIDL_MYPICTURES = 39
    CSIDL_MYVIDEO = 14
    CSIDL_NETHOOD = 19
    CSIDL_NETWORK = 18
    CSIDL_PERSONAL = 5
    CSIDL_PHOTOALBUMS = 69
    CSIDL_PLAYLISTS = 63
    CSIDL_PRINTERS = 4
    CSIDL_PRINTHOOD = 27
    CSIDL_PROFILE = 40
    CSIDL_PROGRAM_FILES = 38
    CSIDL_PROGRAM_FILESX86 = 42
    CSIDL_PROGRAM_FILES_COMMON = 43
    CSIDL_PROGRAM_FILES_COMMONX86 = 44
    CSIDL_PROGRAMS = 2
    CSIDL_RECENT = 8
    CSIDL_RESOURCES = 56
    CSIDL_RESOURCES_LOCALIZED = 57
    CSIDL_SAMPLE_MUSIC = 64
    CSIDL_SAMPLE_PLAYLISTS = 65
    CSIDL_SAMPLE_PICTURES = 66
    CSIDL_SAMPLE_VIDEOS = 67
    CSIDL_SENDTO = 9
    CSIDL_STARTMENU = 11
    CSIDL_STARTUP = 7
    CSIDL_SYSTEM = 37
    CSIDL_SYSTEMX86 = 41
    CSIDL_TEMPLATES = 21
    CSIDL_WINDOWS = 36
End Enum

Public Function GetSpecialFolderPath(id As SP_ID) As String
Dim idl As ITEMIDLIST
Dim Buff As String * 260
Dim RetVal As Long
Dim Pos As Integer
   
    RetVal = SHGetSpecialFolderLocation(0, id, idl)
   
    If (RetVal = 0) Then
        RetVal = SHGetPathFromIDList(idl.mkid.cb, Buff)
        'Get position of null
        Pos = InStr(Buff, Chr$(0))
        If (Pos <> 0) Then
            'Strip null and return path
            GetSpecialFolderPath = Left$(Buff, Pos - 1)
        End If
    End If
End Function

Example

Code:

Private Sub Command1_Click()
    Call MsgBox(GetSpecialFolderPath(CSIDL_TEMPLATES))
    Call MsgBox(GetSpecialFolderPath(CSIDL_ADMINTOOLS))
End Sub


Viewing all articles
Browse latest Browse all 1449

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>