Carpeta personalizada

Iniciado por okik, 2 Abril 2015, 12:44 PM

0 Miembros y 1 Visitante están viendo este tema.

okik

Hola

Quiero desde VB (net o 6) crear una carpeta personalizada. Esto es, una carpeta que contiene un archivo INI, el cual indica el icono que ha de usar la carpeta y la imagen de fondo que ha de mostrar.

Lo del archivo INI ya se como va. El caso es que se hacerlo manualmente, pero no se si habrá alguna API o Script para crearla directamente desde una apliación y luego desde el programa modificar el archivo INI.

He probado de usar un código CLSID, nombrando la carpeta:

Nombre.{450d8fba-ad25-11d0-98a8-0800361b1103}

Entonces, en este caso, la carpeta se convierte en una carpeta "MyDocuments", pero no se crea el archivo "Desktop.ini"

Gracias


okik

#1
Hola,

Gracias a todos por las respuestas (ironía) ;-)

Pues no entiendo como nadie ha respondido, pues no era muy difícil. Quizás no me expliqué bien...

Finalmente encontré la respuesta y hay tres formas de crear la carpetas personalizada:

1ra. Usando el comando de consola attrib. Donde +s convierte la carpeta en carpeta del sistema y -s la deshabilita como tal y  +h convierte una carpeta o archivo en 'oculto'. -h la convierte en carpeta o archivo visible.

Código (vb) [Seleccionar]

Shell "cmd /r attrib +s """ & strFolder & """"
Shell "cmd /r attrib +h """ & strFolder & "\Desktop.ini"""



2da. Utilizando la declaración API SetFileAttributes y el atributo FILE_ATTRIBUTE_SYSTEM del kernel32.dll
Al usarse attrib.exe deduje que era cuestión de cambiar el atributo a "system". Además importé las declaraciones API de attrib.exe a ver que usaba y vi que usaba SetFileAttributes para cambiar el atributo.

Código (vb) [Seleccionar]

Private Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" _
(ByVal lpFileName As String, _
ByVal dwFileAttributes As Long) As Long
Private Const FILE_ATTRIBUTE_SYSTEM = &H4




3ra. Utilizando la declaración API PathMakeSystemFolder que se encuentra en shlwapi.dll
Esta forma quizás no es tan conocida. Lo econtré en una página china http://tech.sina.com.cn/s/2005-02-25/0927535579.shtml Convierte directamente la carpeta en carpeta del sistema.

Código (vb) [Seleccionar]

Private Declare Function PathMakeSystemFolder Lib "shlwapi.dll" _
Alias "PathMakeSystemFolderA" _
(ByVal pszPath As String) As Long


Tras convertir la carpeta a "carpeta del sistema", se puede crear un archivo Desktop.ini en su interior y ahora sí este archivo ini es permitido (o leído) y se puede establecer la personalización de la carpeta.