Results 1 to 3 of 3

Thread: How to find system folders such as...

  1. #1

    Thread Starter
    Frenzied Member
    Join Date
    Dec 2000
    Posts
    1,195

    How to find system folders such as...

    the favorites folder, the history folder, etc

  2. #2
    Fanatic Member rudvs2's Avatar
    Join Date
    Mar 2001
    Location
    NZ
    Posts
    935
    Heres an Example of how to do it

    VB Code:
    1. Option Explicit
    2. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    3. ' Copyright ©1996-2001 VBnet, Randy Birch, All Rights Reserved.
    4. ' Some pages may also contain other copyrights by the author.
    5. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    6. ' You are free to use this code within your own applications,
    7. ' but you are expressly forbidden from selling or otherwise
    8. ' distributing this source code without prior written consent.
    9. ' This includes both posting free demo projects made from this
    10. ' code as well as reproducing the code in text or html format.
    11. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    12.  
    13. Public Const CSIDL_DESKTOP = &H0                 '{desktop}
    14. Public Const CSIDL_INTERNET = &H1                'Internet Explorer (icon on desktop)
    15. Public Const CSIDL_PROGRAMS = &H2                'Start Menu\Programs
    16. Public Const CSIDL_CONTROLS = &H3                'My Computer\Control Panel
    17. Public Const CSIDL_PRINTERS = &H4                'My Computer\Printers
    18. Public Const CSIDL_PERSONAL = &H5                'My Documents
    19. Public Const CSIDL_FAVORITES = &H6               '{user}\Favourites
    20. Public Const CSIDL_STARTUP = &H7                 'Start Menu\Programs\Startup
    21. Public Const CSIDL_RECENT = &H8                  '{user}\Recent
    22. Public Const CSIDL_SENDTO = &H9                  '{user}\SendTo
    23. Public Const CSIDL_BITBUCKET = &HA               '{desktop}\Recycle Bin
    24. Public Const CSIDL_STARTMENU = &HB               '{user}\Start Menu
    25. Public Const CSIDL_DESKTOPDIRECTORY = &H10       '{user}\Desktop
    26. Public Const CSIDL_DRIVES = &H11                 'My Computer
    27. Public Const CSIDL_NETWORK = &H12                'Network Neighbourhood
    28. Public Const CSIDL_NETHOOD = &H13                '{user}\nethood
    29. Public Const CSIDL_FONTS = &H14                  'windows\fonts
    30. Public Const CSIDL_TEMPLATES = &H15
    31. Public Const CSIDL_COMMON_STARTMENU = &H16       'All Users\Start Menu
    32. Public Const CSIDL_COMMON_PROGRAMS = &H17        'All Users\Programs
    33. Public Const CSIDL_COMMON_STARTUP = &H18         'All Users\Startup
    34. Public Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19'All Users\Desktop
    35. Public Const CSIDL_APPDATA = &H1A                '{user}\Application Data
    36. Public Const CSIDL_PRINTHOOD = &H1B              '{user}\PrintHood
    37. Public Const CSIDL_LOCAL_APPDATA = &H1C          '{user}\Local Settings _
    38.                                                  '\Application Data (non roaming)
    39. Public Const CSIDL_ALTSTARTUP = &H1D             'non localized startup
    40. Public Const CSIDL_COMMON_ALTSTARTUP = &H1E      'non localized common startup
    41. Public Const CSIDL_COMMON_FAVORITES = &H1F
    42. Public Const CSIDL_INTERNET_CACHE = &H20
    43. Public Const CSIDL_COOKIES = &H21
    44. Public Const CSIDL_HISTORY = &H22
    45. Public Const CSIDL_COMMON_APPDATA = &H23          'All Users\Application Data
    46. Public Const CSIDL_WINDOWS = &H24                 'GetWindowsDirectory()
    47. Public Const CSIDL_SYSTEM = &H25                  'GetSystemDirectory()
    48. Public Const CSIDL_PROGRAM_FILES = &H26           'C:\Program Files
    49. Public Const CSIDL_MYPICTURES = &H27              'C:\Program Files\My Pictures
    50. Public Const CSIDL_PROFILE = &H28                 'USERPROFILE
    51. Public Const CSIDL_SYSTEMX86 = &H29               'x86 system directory on RISC
    52. Public Const CSIDL_PROGRAM_FILESX86 = &H2A        'x86 C:\Program Files on RISC
    53. Public Const CSIDL_PROGRAM_FILES_COMMON = &H2B    'C:\Program Files\Common
    54. Public Const CSIDL_PROGRAM_FILES_COMMONX86 = &H2C 'x86 Program Files\Common on RISC
    55. Public Const CSIDL_COMMON_TEMPLATES = &H2D        'All Users\Templates
    56. Public Const CSIDL_COMMON_DOCUMENTS = &H2E        'All Users\Documents
    57. Public Const CSIDL_COMMON_ADMINTOOLS = &H2F       'All Users\Start Menu\Programs _
    58.                                                   '\Administrative Tools
    59. Public Const CSIDL_ADMINTOOLS = &H30              '{user}\Start Menu\Programs _
    60.                                                   '\Administrative Tools
    61. Public Const CSIDL_FLAG_CREATE = &H8000&          'combine with CSIDL_ value to force
    62.                                                   'create on SHGetSpecialFolderLocation()
    63. Public Const CSIDL_FLAG_DONT_VERIFY = &H4000      'combine with CSIDL_ value to force
    64.                                                   'create on SHGetSpecialFolderLocation()
    65. Public Const CSIDL_FLAG_MASK = &HFF00             'mask for all possible flag values
    66. Public Const SHGFP_TYPE_CURRENT = &H0             'current value for user, verify it exists
    67. Public Const SHGFP_TYPE_DEFAULT = &H1
    68.  
    69. Public Const MAX_PATH = 260
    70. Public Const S_OK = 0
    71.  
    72. 'Converts an item identifier list to a file system path.
    73. Public Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    74.    Alias "SHGetPathFromIDListA" _
    75.   (ByVal pidl As Long, _
    76.    ByVal pszPath As String) As Long
    77.  
    78. Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
    79.    (ByVal hwndOwner As Long, _
    80.     ByVal nFolder As Long, _
    81.     pidl As Long) As Long
    82.  
    83. Public Declare Sub CoTaskMemFree Lib "ole32.dll" _
    84.    (ByVal pv As Long)
    85. '--end block--

    form code in next post

  3. #3
    Fanatic Member rudvs2's Avatar
    Join Date
    Mar 2001
    Location
    NZ
    Posts
    935
    here is the form code

    VB Code:
    1. Option Explicit
    2.  
    3. Private Sub Combo1_Click()
    4.  
    5.    Dim index As Long
    6.    
    7.    index = Combo1.ItemData(Combo1.ListIndex)
    8.    
    9.    If index > -1 Then
    10.       Text1.Text = GetSpecialFolderLocation(index)
    11.    End If
    12.  
    13. End Sub
    14.  
    15.  
    16. Private Sub Form_Load()
    17.    
    18.    With Combo1
    19.       .Font.Name = "Courier New"
    20.       .Font.Size = 9
    21.      
    22.       .AddItem "CSIDL_DESKTOP                 {desktop}"
    23.       .ItemData(.NewIndex) = &H0
    24.      
    25.       .AddItem "CSIDL_INTERNET                Internet Explorer (icon on desktop)"
    26.       .ItemData(.NewIndex) = &H1
    27.      
    28.       .AddItem "CSIDL_PROGRAMS                Start Menu\Programs"
    29.       .ItemData(.NewIndex) = &H2
    30.      
    31.       .AddItem "CSIDL_CONTROLS                My Computer\Control Panel"
    32.       .ItemData(.NewIndex) = &H3
    33.      
    34.       .AddItem "CSIDL_PRINTERS                My Computer\Printers"
    35.       .ItemData(.NewIndex) = &H4
    36.      
    37.       .AddItem "CSIDL_PERSONAL                My Documents"
    38.       .ItemData(.NewIndex) = &H5
    39.      
    40.       .AddItem "CSIDL_FAVORITES               {user}\Favourites"
    41.       .ItemData(.NewIndex) = &H6
    42.      
    43.       .AddItem "CSIDL_STARTUP                 Start Menu\Programs\Startup"
    44.       .ItemData(.NewIndex) = &H7
    45.      
    46.       .AddItem "CSIDL_RECENT                  {user}\Recent"
    47.       .ItemData(.NewIndex) = &H8
    48.      
    49.       .AddItem "CSIDL_SENDTO                  {user}\SendTo"
    50.       .ItemData(.NewIndex) = &H9
    51.      
    52.       .AddItem "CSIDL_BITBUCKET               {desktop}\Recycle Bin"
    53.       .ItemData(.NewIndex) = &HA
    54.      
    55.       .AddItem "CSIDL_STARTMENU               {user}\Start Menu"
    56.       .ItemData(.NewIndex) = &HB
    57.      
    58.       .AddItem "CSIDL_DESKTOPDIRECTORY        {user}\Desktop"
    59.       .ItemData(.NewIndex) = &H10
    60.      
    61.       .AddItem "CSIDL_DRIVES                  My Computer"
    62.       .ItemData(.NewIndex) = &H11
    63.      
    64.       .AddItem "CSIDL_NETWORK                 Network Neighbourhood"
    65.       .ItemData(.NewIndex) = &H12
    66.      
    67.       .AddItem "CSIDL_NETHOOD                 {user}\nethood"
    68.       .ItemData(.NewIndex) = &H13
    69.      
    70.       .AddItem "CSIDL_FONTS                   windows\fonts"
    71.       .ItemData(.NewIndex) = &H14
    72.      
    73.       .AddItem "CSIDL_TEMPLATES"
    74.       .ItemData(.NewIndex) = &H15
    75.      
    76.       .AddItem "CSIDL_COMMON_STARTMENU         All Users\Start Menu"
    77.       .ItemData(.NewIndex) = &H16
    78.      
    79.       .AddItem "CSIDL_COMMON_PROGRAMS          All Users\Programs"
    80.       .ItemData(.NewIndex) = &H17
    81.      
    82.       .AddItem "CSIDL_COMMON_STARTUP           All Users\Startup"
    83.       .ItemData(.NewIndex) = &H18
    84.      
    85.       .AddItem "CSIDL_COMMON_DESKTOPDIRECTORY  All Users\Desktop"
    86.       .ItemData(.NewIndex) = &H19
    87.      
    88.       .AddItem "CSIDL_APPDATA                  {user}\Application Data"
    89.       .ItemData(.NewIndex) = &H1A
    90.      
    91.       .AddItem "CSIDL_PRINTHOOD                {user}\PrintHood"
    92.       .ItemData(.NewIndex) = &H1B
    93.      
    94.       .AddItem "CSIDL_LOCAL_APPDATA            {user}\Local Settings\Application Data (non roaming)"
    95.       .ItemData(.NewIndex) = &H1C
    96.      
    97.       .AddItem "CSIDL_ALTSTARTUP               non localized startup"
    98.       .ItemData(.NewIndex) = &H1D
    99.      
    100.       .AddItem "CSIDL_COMMON_ALTSTARTUP        non localized common startup"
    101.       .ItemData(.NewIndex) = &H1E
    102.      
    103.       .AddItem "CSIDL_COMMON_FAVORITES"
    104.       .ItemData(.NewIndex) = &H1F
    105.      
    106.       .AddItem "CSIDL_INTERNET_CACHE"
    107.       .ItemData(.NewIndex) = &H20
    108.      
    109.       .AddItem "CSIDL_COOKIES"
    110.       .ItemData(.NewIndex) = &H21
    111.      
    112.       .AddItem "CSIDL_HISTORY"
    113.       .ItemData(.NewIndex) = &H22
    114.      
    115.       .AddItem "CSIDL_COMMON_APPDATA           All Users\Application Data"
    116.       .ItemData(.NewIndex) = &H23
    117.      
    118.       .AddItem "CSIDL_WINDOWS                  GetWindowsDirectory()"
    119.       .ItemData(.NewIndex) = &H24
    120.      
    121.       .AddItem "CSIDL_SYSTEM                   GetSystemDirectory()"
    122.       .ItemData(.NewIndex) = &H25
    123.      
    124.       .AddItem "CSIDL_PROGRAM_FILES            C:\Program Files"
    125.       .ItemData(.NewIndex) = &H26
    126.      
    127.       .AddItem "CSIDL_MYPICTURES               C:\Program Files\My Pictures"
    128.       .ItemData(.NewIndex) = &H27
    129.      
    130.       .AddItem "CSIDL_PROFILE                  USERPROFILE"
    131.       .ItemData(.NewIndex) = &H28
    132.      
    133.       .AddItem "CSIDL_SYSTEMX86                x86 system directory on RISC"
    134.       .ItemData(.NewIndex) = &H29
    135.      
    136.       .AddItem "CSIDL_PROGRAM_FILESX86         x86 C:\Program Files on RISC"
    137.       .ItemData(.NewIndex) = &H2A
    138.      
    139.       .AddItem "CSIDL_PROGRAM_FILES_COMMON     C:\Program Files\Common"
    140.       .ItemData(.NewIndex) = &H2B
    141.      
    142.       .AddItem "CSIDL_PROGRAM_FILES_COMMONX86  x86 Program Files\Common on RISC"
    143.       .ItemData(.NewIndex) = &H2C
    144.      
    145.       .AddItem "CSIDL_COMMON_TEMPLATES         All Users\Templates"
    146.       .ItemData(.NewIndex) = &H2D
    147.      
    148.       .AddItem "CSIDL_COMMON_DOCUMENTS         All Users\Documents"
    149.       .ItemData(.NewIndex) = &H2E
    150.      
    151.       .AddItem "CSIDL_COMMON_ADMINTOOLS        All Users\Start Menu\Programs\Administrative Tools"
    152.       .ItemData(.NewIndex) = &H2F
    153.      
    154.       .AddItem "CSIDL_ADMINTOOLS               {user}\Start Menu\Programs\Administrative Tools"
    155.       .ItemData(.NewIndex) = &H30
    156.    End With
    157.  
    158. End Sub
    159.  
    160.  
    161. Private Function GetSpecialFolderLocation(CSIDL As Long) As String
    162.  
    163.    Dim sPath As String
    164.    Dim pidl As Long
    165.    
    166.   'fill the idl structure with the specified folder item
    167.    If SHGetSpecialFolderLocation(Me.hWnd, CSIDL, pidl) = S_OK Then
    168.      
    169.      'if the pidl is returned, initialize
    170.      'and get the path from the id list
    171.       sPath = Space$(MAX_PATH)
    172.      
    173.       If SHGetPathFromIDList(ByVal pidl, ByVal sPath) Then
    174.  
    175.         'return the path
    176.          GetSpecialFolderLocation = Left(sPath, InStr(sPath, Chr$(0)) - 1)
    177.          
    178.       End If
    179.    
    180.      'free the pidl
    181.       Call CoTaskMemFree(pidl)
    182.  
    183.     End If
    184.    
    185. End Function
    186. '--end block--'

    Hope that helped :d

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width