Login
网站首页 > 文章中心 > VB6

VB6编程获取当前系统桌面路径代码分享

作者:小编 更新时间:2024-11-21 09:29:58 浏览量:61人看过
标签arcview报错:该文档ID(999999)不存在。

获取到的目录都是以系统当前设置为准。使用时只要把代码保存在一个模块中,调用时一个函数搞定。

Private Sub Command1_Click()
MsgBox GetWinPath(CSIDL_DESKTOP)
End Sub

'将下面的代码放入一个模块中
'*************************************************************************************************
'******************** 作者: 南宫飘雪 ******************************************
'*************************************************************************************************
Private declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pIdl As Long, ByVal szPath As String) As Long
Private declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Const thePathMaxLen = 1024

Public Enum SHSpecialFolderIDs '注释:列出所有Windows下特殊文件夹的ID
CSIDL_DEFAULT = &HFF '默认,一般为空
CSIDL_DESKTOP = &H0 '“桌面”目录
CSIDL_INTERNET = &H1
CSIDL_PROGRAMS = &H2 '“程序”目录
CSIDL_CONTROLS = &H3
CSIDL_PRINTERS = &H4
CSIDL_PERSONAL = &H5 '“我的文档”目录
CSIDL_FAVORITES = &H6 '“收藏夹”目录
CSIDL_STARTUP = &H7 '“启动”目录
CSIDL_RECENT = &H8 '“最近文档”目录
CSIDL_SENDTO = &H9 '“发送到...”目录
CSIDL_BITBUCKET = &HA
CSIDL_STARTMENU = &HB '“开始”菜单目录
CSIDL_DESKTOPDIRECTORY = &H10
CSIDL_DRIVES = &H11
CSIDL_NETWORK = &H12 'NETWORK目录
CSIDL_NETHOOD = &H13 'NETHOOD目录
CSIDL_FONTS = &H14 '“字体”目录
CSIDL_TEMPLATES = &H15 'TEMPLATES目录
CSIDL_COMMON_STARTMENU = &H16 '公用“开始”菜单目录
CSIDL_COMMON_PROGRAMS = &H17 '公用“程序”目录
CSIDL_COMMON_STARTUP = &H18 '公用“启动”目录
CSIDL_COMMON_DESKTOPDIRECTORY = &H19
CSIDL_APPDATA = &H1A 'AppData目录
CSIDL_PRINTHOOD = &H1B '打印
CSIDL_ALTSTARTUP = &H1D
CSIDL_COMMON_ALTSTARTUP = &H1E
CSIDL_COMMON_FAVORITES = &H1F '公用收藏夹
CSIDL_INTERNET_CACHE = &H20 'Internet网页临时目录
CSIDL_COOKIES = &H21 'COOKIES目录
CSIDL_HISTORY = &H22 '历史记录
CSIDL_WINDOWS = &H8000& 'Windows目录
CSIDL_SYSTEM = &H8001& '系统目录,Win9x为SYSTEM,2K/XP为SYSTEM32的全路径
CSIDL_TEMP = &H8002& '临时目录全路径
End Enum

Public Function GetWinPath(ByVal PathLong As SHSpecialFolderIDs) As String
'注释:获取一个指定ID的Windows目录全路径
'输入:PathLong为目录ID号,详情参照SHSpecialFolderIDs
'注释:作者 南宫飘雪 Joforn@sohu.com

Dim tPath As String * thePathMaxLen
Dim pIdl As Long, pathL As Long
If PathLong < 255 Then
If SHGetSpecialFolderLocation(0&, PathLong, pIdl) Then Exit Function
If SHGetPathFromIDList(pIdl, tPath) Then
pathL = InStr(tPath, Chr(0))
If pathL Then
GetWinPath = Left(tPath, pathL - 1)
Else
GetWinPath = vbNullString
End If
End If
Else
select Case PathLong
Case CSIDL_WINDOWS:
pathL = GetWindowsDirectory(tPath, thePathMaxLen)
Case CSIDL_SYSTEM:
pathL = GetSystemDirectory(tPath, thePathMaxLen)
Case CSIDL_TEMP:
pathL = GetTempPath(thePathMaxLen, tPath)
End select
If pathL > 0 Then GetWinPath = Left(tPath, pathL)
End If
End Function

版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/vb/1894.html
<<上一篇 2024-08-06
下一篇 >> 2024-11-21

编辑推荐

热门文章