October 2009
M T W T F S S
    Nov »
 1234
567891011
12131415161718
19202122232425
262728293031  

Archives

Categories

  • [+]ASP.NET (7) 
  • [+]C# (87) 
  • [+]C++ (13) 
  • [+]Delphi (20) 
  • [+]JavaScript (24) 
  • [+]Regular Expressions (7) 
  • [+]SQL (13) 
  • [—]VB (100) 
  • [+]VB.NET (4) 

Online

Users: 7 Guests
  • Loading...


    Loading...

    Login






    Register | Lost password?

    Register





    A password will be mailed to you.
    Log in | Lost password?

    Retrieve password





    A confirmation mail will be sent to your e-mail address.
    Log in | Register
  • Retrieve System Folders Path

    Option Explicit
    
    ' ----------------------------
    ' Constants & API Declarations
    ' ----------------------------
    
    ' These are the api calls needed to get the folder information
    Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwnd As Long, ByVal nFolder As Long, pidl As Long) As Long
    Declare Function SHGetPathFromIDList Lib "Shell32" (pidl As Long, ByVal FolderPath As String) As Long
    Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    
    '    Desktop = 0
    '    StartMenu_Programs = 2
    '    My_Documents = 5
    '    Favorites_Folder = 6
    '    Startup = 7
    '    Recent = 8
    '    SentTo = 9
    '    Start_Menu = 11
    '    Windows_Desktop = 16
    '    Network_Neighborhood = 19
    '    Fonts = 20
    '    ShellNew = 21
    '    AllUsers_Desktop = 25
    '    ApplicationData = 26
    '    Printhood = 27
    '    TemporaryInternetFiles = 32
    '    Cookies = 33
    '    History = 34
    
    '----------------
    '- Public enums
    '----------------
    Public Enum STGM
        STGM_DIRECT = &H0&
        STGM_TRANSACTED = &H10000
        STGM_SIMPLE = &H8000000
        STGM_READ = &H0&
        STGM_WRITE = &H1&
        STGM_READWRITE = &H2&
        STGM_SHARE_DENY_NONE = &H40&
        STGM_SHARE_DENY_READ = &H30&
        STGM_SHARE_DENY_WRITE = &H20&
        STGM_SHARE_EXCLUSIVE = &H10&
        STGM_PRIORITY = &H40000
        STGM_DELETEONRELEASE = &H4000000
        STGM_CREATE = &H1000&
        STGM_CONVERT = &H20000
        STGM_FAILIFTHERE = &H0&
        STGM_NOSCRATCH = &H100000
    End Enum
    
    Public Enum SHELLFOLDERS            ' Shell Folder Path Constants...
        CSIDL_DESKTOP = &H0&    ' ..\WinNT\profiles\username\Desktop
        CSIDL_PROGRAMS = &H2&    ' ..\WinNT\profiles\username\Start Menu\Programs
        CSIDL_CONTROLS = &H3&    ' No Path
        CSIDL_PRINTERS = &H4&    ' No Path
        CSIDL_PERSONAL = &H5&    ' ..\WinNT\profiles\username\Personal
        CSIDL_FAVORITES = &H6&    ' ..\WinNT\profiles\username\Favorites
        CSIDL_STARTUP = &H7&    ' ..\WinNT\profiles\username\Start Menu\Programs\Startup
        CSIDL_RECENT = &H8&    ' ..\WinNT\profiles\username\Recent
        CSIDL_SENDTO = &H9&    ' ..\WinNT\profiles\username\SendTo
        CSIDL_BITBUCKET = &HA&    ' No Path
        CSIDL_STARTMENU = &HB&    ' ..\WinNT\profiles\username\Start Menu
        CSIDL_DESKTOPDIRECTORY = &H10&    ' ..\WinNT\profiles\username\Desktop
        CSIDL_DRIVES = &H11&    ' No Path
        CSIDL_NETWORK = &H12&    ' No Path
        CSIDL_NETHOOD = &H13&    ' ..\WinNT\profiles\username\NetHood
        CSIDL_FONTS = &H14&    ' ..\WinNT\fonts
        CSIDL_TEMPLATES = &H15&    ' ..\WinNT\ShellNew
        CSIDL_COMMON_STARTMENU = &H16&    ' ..\WinNT\profiles\All Users\Start Menu
        CSIDL_COMMON_PROGRAMS = &H17&    ' ..\WinNT\profiles\All Users\Start Menu\Programs
        CSIDL_COMMON_STARTUP = &H18&    ' ..\WinNT\profiles\All Users\Start Menu\Programs\Startup
        CSIDL_COMMON_DESKTOPDIRECTORY = &H19&    '..\WinNT\profiles\All Users\Desktop
        CSIDL_APPDATA = &H1A&    ' ..\WinNT\profiles\username\Application Data
        CSIDL_PRINTHOOD = &H1B&    ' ..\WinNT\profiles\username\PrintHood
    End Enum
    
    ' ---------
    ' Functions
    ' ---------
    
    Public Function FindSystemFolder(ByVal lngNum As Long) As String
        On Error Resume Next
    
        Dim lpStartupPath As String * 240, pidl As Long, hResult As Long
    
        ' Find if a folder does exist with that number
        hResult = SHGetSpecialFolderLocation(0, lngNum, pidl)
    
        If hResult = 0 Then ' There is a result
            ' Get the actualy directory name
            hResult = SHGetPathFromIDList(ByVal pidl, lpStartupPath)
    
            If hResult = 1 Then
                ' Strip the string of all miscellaneous and unused characters
                lpStartupPath = left$(Trim$(lpStartupPath), InStr(lpStartupPath, Chr(0)) - 1)
                FindSystemFolder = Trim$(lpStartupPath)
            End If
        End If
    End Function
    
    Share: These icons link to social bookmarking sites where readers can share and discover new web pages.
    • Digg
    • del.icio.us
    • Bloglines
    • Facebook
    • Google Bookmarks
    • LinkedIn
    • Technorati
    • TwitThis
    • Webnews

    Leave a Reply

     

     

     

    You can use these HTML tags

    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <font color="" face="" size=""> <span style="">

    Spam Protection by WP-SpamFree Plugin