;.lib "shell32.dll"
;SHGetSpecialFolderLocation%(hwnd%,folder%,pidl*)
;SHGetPathFromIDList%(pidl%,pszPath*)
Const MAX_PATH=260
Const CSIDL_PROGRAMS=2 ;Program Groups Folder
Const CSIDL_PERSONAL=5 ;Personal Documents Folder
Const CSIDL_FAVORITES=6 ;Favorites Folder
Const CSIDL_STARTUP=7 ;Startup Group Folder
Const CSIDL_RECENT=8 ;Recently Used Documents Folder
Const CSIDL_SENDTO=9 ;Send To Folder
Const CSIDL_STARTMENU=11 ;Start Menu Folder
Const CSIDL_DESKTOPDIRECTORY=16 ;Desktop Folder
Const CSIDL_NETHOOD=19 ;Network Neighborhood Folder
Const CSIDL_TEMPLATES=21 ;Document Templates Folder
Const CSIDL_COMMON_STARTMENU=22 ;Common Start Menu Folder
Const CSIDL_COMMON_PROGRAMS=23 ;Common Program Groups Folder
Const CSIDL_COMMON_STARTUP=24 ;Common Startup Group Folder
Const CSIDL_COMMON_DESKTOPDIRECTORY=25 ;Common Desktop Folder
Const CSIDL_APPDATA=26 ;Application Data Folder
Const CSIDL_PRINTHOOD=27 ;Printers Folder
Const CSIDL_COMMON_FAVORITES=1 ;Common Favorites Folder
Const CSIDL_INTERNET_CACHE=32 ;Temp. Internet Files Folder
Const CSIDL_COOKIES=33 ;Cookies Folder
Const CSIDL_HISTORY=34 ;History Folder
AppTitle GetSpecialFolderLocation(CSIDL_PERSONAL)
Function GetSpecialFolderLocation$(folder)
temp=CreateBank(4)
SHGetSpecialFolderLocation(0,folder,temp)
pidl=PeekInt(temp,0)
FreeBank temp
If Not pidl Return
temp=CreateBank(MAX_PATH)
SHGetPathFromIDList(pidl,temp)
s$=PeekString(temp,0)
FreeBank temp
Return s
End Function
Function PeekString$(bank,offset)
l = PeekInt(bank,offset)
s$ = ""
For i = 0 To MAX_PATH
s$ = s$ + Chr$(PeekByte(bank,offset+i))
Next
Return s$
End Function
WaitKey()

I run the program and it works fine.
error here:

|