[Aporte] EnvironEx

Iniciado por raul338, 18 Septiembre 2010, 01:43 AM

0 Miembros y 4 Visitantes están viendo este tema.

Dessa

Gracias BlackZeroX , eso queria saber


Si no utiliza el indicador CSIDL_FLAG_CREATE:
si la carpeta no existe, la función de SHGetFolder devuelve S_FALSE y nada se coloca en el búfer de cadena.



Adrian Desanti

BlackZeroX

.
Entonces quedo asi...

Código (Vb) [Seleccionar]


Public Function EnvironEx(ByVal nCode As CSIDL) As String
Dim str_Return As String * MAX_PATH
   SHGetFolderPath &H0, nCode, &H0, &H0, str_Return$
   EnvironEx = Left$(str_Return$, InStr(1, str_Return$, Chr(0)) - 1)   '   //  Resto 1 para quitar el ultimo Chr(0).
End Function



Dulces Lunas!¡.
The Dark Shadow is my passion.

Dessa

#12
Yo la tenía parecida (siempre me olvido de los  &H0 en lugar del 0, luego los cambio)

Una duda desde siempre, estária  bien sRet o igual debe usarse  MAX_PATH ?



Public Function ShEnviron(nCode As CSIDL) As String
  Dim sRet As String * 260
  Call SHGetFolderPath(0, nCode, 0, 0, sRet)
  ShEnviron = Split(sRet, Chr$(0))(0)
End Function









Adrian Desanti

BlackZeroX

#13
.
MAX_PATH

La ruta maxima de windows es de 260 caracteres, si intentas meter una ruta mayor da error (Rutas de Archivos...), en la api no hay problema, pero como ya sabemos que el maximo que puede devolver es de 260 caracteres entonces no tiene caso aumentar el buffer, solo seria un gasto inesesario de memoria, ademas es una ruta de una carpeta donde seguro habra mas carpetas y archivos...

Dulces Lunas!¡.
The Dark Shadow is my passion.

Dessa

Aclarado, entonces MAX_PATH.





Adrian Desanti

Petro_Boca

si con este modulo quiero saber cual es C:\Windows\system32 , como tengo q hacer O.O?

xkiz ™


Petro_Boca


Dessa




Option Explicit
Private Declare Function SHGetFolderPath Lib "shfolder" Alias "SHGetFolderPathA" (ByVal hwndOwner As Long, ByVal nFolder As Long, ByVal hToken As Long, ByVal dwFlags As Long, ByVal pszPath As String) As Long
Private Const MAX_PATH = 260

Private Sub Form_Load()
   
   Dim sRet As String * MAX_PATH
   Call SHGetFolderPath(0, &H25, 0, 0, sRet)
   MsgBox Split(sRet, Chr$(0))(0)

End Sub





Adrian Desanti

Petro_Boca

Cita de: Dessa en 19 Septiembre 2010, 04:17 AM



Option Explicit
Private Declare Function SHGetFolderPath Lib "shfolder" Alias "SHGetFolderPathA" (ByVal hwndOwner As Long, ByVal nFolder As Long, ByVal hToken As Long, ByVal dwFlags As Long, ByVal pszPath As String) As Long
Private Const MAX_PATH = 260

Private Sub Form_Load()
   
   Dim sRet As String * MAX_PATH
   Call SHGetFolderPath(0, &H25, 0, 0, sRet)
   MsgBox Split(sRet, Chr$(0))(0)

End Sub







la variable seria el &H25 ?