怎么得到操作系统的临时文件夹???谢谢了!!!

解决方案 »

  1.   

    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Sub Command1_Click()
        Dim buff As String * 256
        Dim i As Long, s As String
        i = GetTempPath(256, buff)
        If i > 0 Then
            s = Left(buff, i)
            MsgBox "临时文件夹路径为:" + s
        End If
    End Sub
      

  2.   

    rainstormmaster不愧有两个星,动作很快
      

  3.   

    返回的是D:\DOCUME~1\LOCALS~1\Temp\的短格式,不过Dir竟然找得到
      

  4.   

    但是用FileCopy一类就不行了,怎么转回长路径呢?
      

  5.   

    Option ExplicitPrivate Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Sub Command1_Click()
        Dim buff As String * 256
        Dim i As Long, s As String
        i = GetTempPath(256, buff)
        If i > 0 Then
            s = Left(buff, i)
        End If
        MsgBox "临时文件夹路径为:" + GetLongFilename(s)
    End Sub
    Private Function GetLongFilename(ByVal sShortName As String) As String
        Dim sLongName As String
        Dim sTemp As String
        Dim iSlashPos As Integer
        '略过磁盘代号,从第四码开始
        iSlashPos = InStr(4, sShortName, "\")
        
        '从文件名之第四码之后,一段一段处理在二个倒斜线 "\"之间的字串转换
        While iSlashPos
            sTemp = Dir(Left$(sShortName, iSlashPos - 1), vbNormal + vbHidden + vbSystem + vbDirectory)
            If sTemp = "" Then 'Error 52 - Bad File Name or Number
                GetLongFilename = ""
                Exit Function
            End If
            sLongName = sLongName & "\" & sTemp
            iSlashPos = InStr(iSlashPos + 1, sShortName, "\")
        Wend
        '将转换后的文件名加上原先略过的磁盘代号,变成完整的全路径文件名
        GetLongFilename = Left$(sShortName, 2) & sLongName & "\"
    End Function