Public Const MAX_LEN = 200
’字符串最大长度
Public Const DESKTOP = &H0&
’桌面
Public Const PROGRAMS = &H2& ’程序集
Public Const STARTUP = &H7& ’启动
Public Const STARTMENU = &HB& ’开始菜单
Public Const MYDOCUMENTS = &H5& ’My Documents
Public Const MYFAVORITES = &H6& ’My Favorites
Public Const RECENT = &H8& ’最近打开的文件
Declare Function SHGetSpecialFolderLocation Lib "Shell32 "(ByVal hwndOwne r As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromI DListA" (ByVal pidl As Long, ByVal szPath A s String) As Long
Declare Function GetWindowsDirectory Lib "kernel32" Alia s "GetWindowsDir ectoryA" (ByVal lpBuffer As String, ByVal n Size As Long) As Long
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirec toryA" (ByVal lpBuffer As String, ByVal nSi ze As Long) As Long
在窗体frmGetSysPath的代码模块中添加Form_Load事件过程:
Private Sub Form_Load()
Dim s As String * MAX_LEN '存放结果的固定长度的字符串
Dim Length As Long
'字符串的实际长度
Dim pidl As Long
'某特殊目录在特殊目录列表中的位置
'获得Windows目录
Length = GetWindowsDirectory(s, MAX_LEN)
txtWinPath = Left(s, Length)
'获得System目录
Length = GetSystemDirectory(s, MAX_LEN)
txtSystemPath = Left(s, Length)
'获得DeskTop目录,为获得其他特殊目录
'只需改变SHGetSpecialFolderLocation的第二个参数即可
SHGetSpecialFolderLocation 0, DESKTOP, pidl
SHGetPathFromIDList pidl, s
xtDeskTopPath = Left(s, InStr(s, Chr(0)) - 1)
End Sub