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
rainstormmaster不愧有两个星,动作很快
返回的是D:\DOCUME~1\LOCALS~1\Temp\的短格式,不过Dir竟然找得到
但是用FileCopy一类就不行了,怎么转回长路径呢?
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
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
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