Windows API函数SHGetSpecialFolderLocation,我的竹叶 www.applevb.com有源程序
Option Explicit '**********获得系统特殊目录********************** Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, ppidl As ITEMIDLIST) As LongPrivate Type SHITEMID cb As Long abID As Byte End TypePrivate Type ITEMIDLIST mkid As SHITEMID End TypeConst NOERROR = 0 'Const CSIDL_DESKTOP = &H0 'Const CSIDL_PROGRAMS = &H2 'Const CSIDL_CONTROLS = &H3 'Const CSIDL_PRINTERS = &H4 'Const CSIDL_PERSONAL = &H5 'Const CSIDL_FAVORITES = &H6 'Const CSIDL_STARTUP = &H7 'Const CSIDL_RECENT = &H8 'Const CSIDL_SENDTO = &H9 'Const CSIDL_BITBUCKET = &HA 'Const CSIDL_STARTMENU = &HB 'Const CSIDL_DESKTOPDIRECTORY = &H10 'Const CSIDL_DRIVES = &H11 'Const CSIDL_NETWORK = &H12 'Const CSIDL_NETHOOD = &H13 'Const CSIDL_FONTS = &H14 'Const CSIDL_TEMPLATES = &H15 Const MAX_PATH = 260 '*********************************************** Dim PD As BooleanPublic Function GetSystemDir(DirID As Long) As String Dim pidl As ITEMIDLIST, strtemp As String, ret As Long strtemp = String(MAX_PATH, 0) ret = SHGetSpecialFolderLocation(Me.hWnd, DirID, pidl) ret = SHGetPathFromIDList(pidl.mkid.cb, strtemp) GetSystemDir = Left(strtemp, InStr(strtemp, Chr(0)) - 1) End Function Private Sub cmdExit_Click() Unload Me End SubPrivate Sub Form_Load() Dim i As Long Dim k As StringPic.Visible = False List1.ZOrder 0 Call note List1.AddItem "Long值 返回值(系统特殊目录)" List1.AddItem ""
For i = 0 To 100 k = GetSystemDir(i) If Len(Trim(k)) > 0 Then List1.AddItem CStr(i) & String(10 - Len(Str(i)), " ") & k NextEnd Sub
www.applevb.com有源程序
'**********获得系统特殊目录**********************
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, ppidl As ITEMIDLIST) As LongPrivate Type SHITEMID
cb As Long
abID As Byte
End TypePrivate Type ITEMIDLIST
mkid As SHITEMID
End TypeConst NOERROR = 0
'Const CSIDL_DESKTOP = &H0
'Const CSIDL_PROGRAMS = &H2
'Const CSIDL_CONTROLS = &H3
'Const CSIDL_PRINTERS = &H4
'Const CSIDL_PERSONAL = &H5
'Const CSIDL_FAVORITES = &H6
'Const CSIDL_STARTUP = &H7
'Const CSIDL_RECENT = &H8
'Const CSIDL_SENDTO = &H9
'Const CSIDL_BITBUCKET = &HA
'Const CSIDL_STARTMENU = &HB
'Const CSIDL_DESKTOPDIRECTORY = &H10
'Const CSIDL_DRIVES = &H11
'Const CSIDL_NETWORK = &H12
'Const CSIDL_NETHOOD = &H13
'Const CSIDL_FONTS = &H14
'Const CSIDL_TEMPLATES = &H15
Const MAX_PATH = 260
'***********************************************
Dim PD As BooleanPublic Function GetSystemDir(DirID As Long) As String
Dim pidl As ITEMIDLIST, strtemp As String, ret As Long
strtemp = String(MAX_PATH, 0)
ret = SHGetSpecialFolderLocation(Me.hWnd, DirID, pidl)
ret = SHGetPathFromIDList(pidl.mkid.cb, strtemp)
GetSystemDir = Left(strtemp, InStr(strtemp, Chr(0)) - 1)
End Function
Private Sub cmdExit_Click()
Unload Me
End SubPrivate Sub Form_Load()
Dim i As Long
Dim k As StringPic.Visible = False
List1.ZOrder 0
Call note
List1.AddItem "Long值 返回值(系统特殊目录)"
List1.AddItem ""
For i = 0 To 100
k = GetSystemDir(i)
If Len(Trim(k)) > 0 Then List1.AddItem CStr(i) & String(10 - Len(Str(i)), " ") & k
NextEnd Sub
对不住,给你们的分数不知怎么给分到了其它人头上,呵呵。