Public Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Public Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As LongConst MAX_LEN = 200 '字符串最大长度
Const DESKTOP = &H0& '桌面Function GetDesktop(str As String)
Dim sTmp As String * MAX_LEN '存放结果的固定长度的字符串
Dim pidl As Long '某特殊目录在特殊目录列表中的位置'*************************获得DeskTop目录**********************************
SHGetSpecialFolderLocation 0, DESKTOP, pidl
SHGetPathFromIDList pidl, sTmp
str = Left(sTmp, InStr(sTmp, Chr(0)) - 1)
'*************************获得发送到目录**********************************
End Function
当我用Administrator登陆时,这个得到的是"C:\Documents and Settings\Administrator\桌面",但桌面上的快捷方式不光来自这个目录,还有"C:\Documents and Settings\All Users\桌面"这个目录里的,有什麽办法不用手动的方式得到这个目录?

解决方案 »

  1.   

    \Documents and Settings\All Users\
    这个目录是系统默认公用的
    手动就行了吧~
      

  2.   

    'the desktop for all users
    Const CSIDL_COMMON_DESKTOPDIRECTORY As Long = &H19SHGetSpecialFolderLocation 0, CSIDL_COMMON_DESKTOPDIRECTORY, pidl
      

  3.   

    Public Declare Function GetLogicalDriveStrings Lib "kernel32.dll" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Public Function GetAllDrivers(ByRef arrAllDrivers() As String) As Boolean
        Dim sTemp As String
        
        Erase arrAllDrivers()
        sTemp = String(MAX_LENGTH, Chr(0))
        If GetLogicalDriveStrings(MAX_LENGTH, sTemp) Then
            sTemp = Left(sTemp, InStrRev(sTemp, "\"))
            arrAllDrivers = Split(sTemp, Chr(0))
            'dim i as integer
            'for i = 0 to ubound(arrAllDrivers)
            '    debug.print arrAllDrivers(i)
            'next
            GetAllDrivers = True
        End If
        
    End Function