Je možné použiť API funkciu SHGetSpecialFolderPath s parametrom CSIDL_PERSONAL
Declare Function SHGetSpecialFolderPath Lib "shell32.dll"
_
Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, _
ByVal
lpszPath As String, ByVal nFolder As Long, _
ByVal fCreate As Long) As Long
Const
CSIDL_PERSONAL = &H5
Dim cesta As String
cesta = Space(260)
SHGetSpecialFolderPath
Form1.hWnd, cesta, CSIDL_PERSONAL, 0
Debug.Print Left(cesta, InStr(1, cesta,
Chr(0)) - 1)
Takto napísaná API funkcia pracuje korektne iba vo VB6.
Jednoduchšia metóda je získať cestu z registra Windows (postup je u vb.NET rovnaký), v kľúči:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders
'položka Personal
V tomto kľúči sa nachádza viac údajov o adresároch, najlepšie bude ak si ich prezriete pomocou regedit.exe