Newsgroup: it.comp.lang.visual-basic
Titolo: Directory di sistema

Salve a tutti.
Avrei bisogno di sapere come poter ottenere i persorsi delle seguenti
cartelle di sistema:
Temp, Documenti,Desktop,Preferiti,Immagini,Musica,Programmi.
Ho cercato anche nel visualizzatore di API, ma ho trovato solo GetTempPath,
che però restituisce il percorso in stile DOS (~1 per i nomi lunghi.)
Grazie a tutti.

Il 12/12/2003 23.18, Giuseppe Marini scrisse:

Cerca environ
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!


Puoi usare SHGetFolderPath:
Declare Function SHGetFolderPath Lib "shell32.dll" Alias "SHGetFolderPathA"
_
   (ByVal hWnd As Long, ByVal nFolder As Long, ByVal hToken As Long _
   , ByVal dwFlags As Long, ByVal pszPath As String) As Long
'Valori di ritorno
Const S_OK = &H0
Const S_FALSE = &H1 'il CLSID e' valido, la cartella non esiste
Const E_INVALIDARG = &H80070057 'il CLSID non e' valido
'Costanti per dwFlags
Const CSIDL_FLAG_CREATE = &H8000
Const CSIDL_FLAG_DONT_VERIFY = &H4000
'Costanti per CLSID delle cartelle
Const CSIDL_ADMINTOOLS = &H30
Const CSIDL_ALTSTARTUP = &H1D
Const CSIDL_APPDATA = &H1A
Const CSIDL_BITBUCKET = &HA
Const CSIDL_COMMON_ADMINTOOLS = &H2F
Const CSIDL_COMMON_ALTSTARTUP = &H1D
Const CSIDL_COMMON_APPDATA = &H23
Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19
Const CSIDL_COMMON_DOCUMENTS = &H2E
Const CSIDL_COMMON_FAVORITES = &H1F
Const CSIDL_COMMON_PROGRAMS = &H17
Const CSIDL_COMMON_STARTMENU = &H16
Const CSIDL_COMMON_STARTUP = &H18
Const CSIDL_COMMON_TEMPLATES = &H2D
Const CSIDL_CONTROLS = &H3
Const CSIDL_COOKIES = &H21
Const CSIDL_DESKTOP = &H0
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_FAVORITES = &H6
Const CSIDL_FONTS = &H14
Const CSIDL_HISTORY = &H22
Const CSIDL_INTERNET = &H1
Const CSIDL_INTERNET_CACHE = &H20
Const CSIDL_LOCAL_APPDATA = &H1C
Const CSIDL_MYPICTURES = &H27
Const CSIDL_NETHOOD = &H13
Const CSIDL_NETWORK = &H12
Const CSIDL_PERSONAL = &H5
Const CSIDL_PRINTERS = &H4
Const CSIDL_PRINTHOOD = &H1B
Const CSIDL_PROFILE = &H28
Const CSIDL_PROGRAM_FILES = &H26
Const CSIDL_PROGRAM_FILES_COMMON = &H2B
Const CSIDL_PROGRAM_FILES_COMMONX86 = &H2C
Const CSIDL_PROGRAM_FILESX86 = &H2A
Const CSIDL_PROGRAMS = &H2
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_STARTMENU = &HB
Const CSIDL_STARTUP = &H7
Const CSIDL_SYSTEM = &H25
Const CSIDL_SYSTEMX86 = &H29
Const CSIDL_TEMPLATES = &H15
Const CSIDL_WINDOWS = &H24
e quindi
Dim Buffer As String, RetCode As Long
Buffer = Space(260)
RetCode = SHGetFolderPath(Me.hWnd, CSIDL_PERSONAL, 0, 0, Buffer)
If RetCode = S_OK Then
    Debug.Print Left$(Buffer, InStr(1, Buffer, Chr$(0)))
End If
il significato delle costanti per le cartelle e', in genere, auto
esplicativo (CSIDL_PERSONAL non troppo a dire il vero, e' la cartella
"Documenti" dell'utente); per chiarimenti cerca la funzione su MSDN
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 ha scritto nel messaggio
news:breol7$2jn8t$1...@ID-138791.news.uni-berlin.de...


 Vedo che per la directory Immagini c'è MYPICTURE, ma per Musica???
[SNIP]
Passo, tutte le costanti che ho trovato sono quelle...
potrei sbagliare, ma non non e' escluso che non esista un valore specifico
per queste cartelle (Musica, Video, My eBooks, ecc..) che non sono cartelle
di sistema vere e proprie (Immagini viene creata durante l'installazione) ma
sono invece aggiunte solo se installi determinati programmi, tipo Media
Player, Microsoft Reader e cosi' via


     Debug.Print Left$(Buffer, InStr(1, Buffer, Chr$(0))-1)

 Temp, Documenti,Desktop,Preferiti,Immagini,Musica,Programmi.
Li trovi tutti nel registro
o
www.google.com
 "ShellSpecialFolderConstants"
questo e' programmi
'vbs
Set oShell = WScript.CreateObject("WScript.Shell")
WScript.Echo  oShell.RegRead("HKLM\Software\Microsoft\Windows\"&_
               "CurrentVersion\ProgramFilesDir")
questo la directory di download di IE
set oShell = CreateObject("WScript.Shell")
bKey = oShell.RegRead("HKEY_CURRENT_USER\Software\"& _
      "Microsoft\Internet Explorer\Download Directory")
oShell.Popup bKey , 2, "",64
questo i tif
Set oShell = WScript.CreateObject("WScript.Shell")
SH_Key = oShell.RegRead("HKCU\Software\Microsoft\Windows\"&_
 "CurrentVersion\Explorer\Shell Folders\Cache")
WScript.Echo SH_Key
ecc
guarda sotto
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Explorer\Shell Folders
--
Fosco

 Puoi usare SHGetFolderPath:
Che è solo per sistemi 2000/XP (forse NT in genere?)