Trucos Obtener otros directorios de windows

Para obtener la ubicación física de una serie de directorios de windows
podremos emplear lo siguiente :

Private Declare Sub CoTaskMemFree Lib "ole32" (ByVal hPointer As Long)
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal hIDL As
Long, ByVal cPath As String) As Boolean
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal
hwndOwner As Long, ByVal nFolder As Long, pidl As Long) As Long

Function SpecialDir(CISDL As Long) As String
  Dim ItemIDList As Long
  Dim FolderPath As String * 260
  Dim retVal As Long

  ItemIDList = 0
  retVal = SHGetSpecialFolderLocation(Me.hWnd, CISDL, ItemIDList)
  If retVal = 0 Then
    SHGetPathFromIDList ItemIDList, FolderPath
    CoTaskMemFree ItemIDList
    retVal = InStr(FolderPath, Chr$(0))
    If retVal > 0 Then
        SpecialDir = Left(FolderPath, retVal - 1)
    Else
        SpecialDir = ""
    End If
  Else
    SpecialDir = ""
  End If
End Function

A continuación se describen los parámetros (ver lista de constantes al final) que podemos pasarle a la función SpecialDir y un ejemplo del resultado obtenido :

CSIDL_DESKTOP : Escritorio de windows. Directorio raíz virtual (C:\WIN95\Escritorio)
CSIDL_PROGRAMS : Programas del usuario (C:\WIN95\Menú Inicio\Programas)
CSIDL_PERSONAL : Documentos del usuario (C:\Mis documentos)
CSIDL_FAVORITES : Favoritos (C:\WIN95\Favoritos)
CSIDL_STARTUP : Programas de inicio del usuario (C:\WIN95\Menú Inicio\Programas\Inicio)
CSIDL_RECENT : Documentos más recientes (C:\WIN95\Recent)
CSIDL_SENDTO : Elementos del menú "Enviar a" (C:\WIN95\SendTo)
CSIDL_STARTMENU : Elementos del menú "Inicio" del usuario (C:\WIN95\Menú Inicio)
CSIDL_DESKTOPDIRECTORY : Directorio para almacenar físicamente los objetos del escritorio (C:\WIN95\Escritorio)
CSIDL_NETHOOD : Objetos que aparecen en el entorno de red (C:\WIN95\Entorno de red)
CSIDL_FONTS : Fuentes (C:\WIN95\FONTS)
CSIDL_TEMPLATES : Plantillas de documentos (C:\WIN95\ShellNew)

Si hubiese más de un usuario en el sistema tendremos también :

CSIDL_COMMON_STARTMENU : Programas y directorios del menú inicio para todos los usuarios
CSIDL_COMMON_PROGRAMS : Programas para todos los usuarios
CSIDL_COMMON_STARTUP : Programas de inicio para todos los usuarios
CSIDL_COMMON_DESKTOPDIRECTORY : Programas y directorios que aparecen en el escritorio de todos los usuarios

A continuación se listan todas las constantes, las que no se han comentado
ha sido porque no me han funcionado :

Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const CSIDL_COMMON_STARTMENU = &H16
Const CSIDL_COMMON_PROGRAMS = &H17
Const CSIDL_COMMON_STARTUP = &H18
Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19
Const CSIDL_APPDATA = &H1A
Const CSIDL_PRINTHOOD = &H1B



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com