为什么在文件名有空格的情况下,获取短路径会失败呢? 100
OptionExplicitConstMAX_PATH=260PrivateDeclareFunctionGetShortPathNameLib"kernel32"Ali...
Option Explicit
Const MAX_PATH = 260
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Dim FilePath As String
Dim ShortFilePath As String
FilePath = "C:\Users\Administrator\Desktop\sample a.txt"
'如果上面文件名中没有空格就能成功
ShortFilePath = String(MAX_PATH, vbNullChar)
GetShortPathName FilePath, ShortFilePath, MAX_PATH
'为什么这里获取的短路径是空的?
End If 展开
Const MAX_PATH = 260
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Dim FilePath As String
Dim ShortFilePath As String
FilePath = "C:\Users\Administrator\Desktop\sample a.txt"
'如果上面文件名中没有空格就能成功
ShortFilePath = String(MAX_PATH, vbNullChar)
GetShortPathName FilePath, ShortFilePath, MAX_PATH
'为什么这里获取的短路径是空的?
End If 展开
4个回答
展开全部
'我的xp+VB6(SP6)测试正常,应该不是系统问题
Option Explicit
Const MAX_PATH = 260
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Sub Command1_Click()
Dim FilePath As String
Dim ShortFilePath As String
FilePath = "C:\Users\Administrator\Desktop\sample a.txt" '试着加个空格,我觉得你在这里加了一个空格但桌面上的文件名没有加空格
ShortFilePath = String(MAX_PATH, vbNullChar)
GetShortPathName FilePath, ShortFilePath, MAX_PATH
MsgBox IIf(Dir(FilePath) <> "", Split(ShortFilePath, Chr(0))(0) & vbNewLine & FilePath, "未找到文件:" & vbNewLine & FilePath) '看提示
End Sub
Option Explicit
Const MAX_PATH = 260
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Sub Command1_Click()
Dim FilePath As String
Dim ShortFilePath As String
FilePath = "C:\Users\Administrator\Desktop\sample a.txt" '试着加个空格,我觉得你在这里加了一个空格但桌面上的文件名没有加空格
ShortFilePath = String(MAX_PATH, vbNullChar)
GetShortPathName FilePath, ShortFilePath, MAX_PATH
MsgBox IIf(Dir(FilePath) <> "", Split(ShortFilePath, Chr(0))(0) & vbNewLine & FilePath, "未找到文件:" & vbNewLine & FilePath) '看提示
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的Windows是什么版本?VB是什么版本?
我的是XP加VB6,运行很正常,没问题。
你可以在CMD下用dir/x看看,我的在命令行下也正常。
我的是XP加VB6,运行很正常,没问题。
你可以在CMD下用dir/x看看,我的在命令行下也正常。
追问
win7 x64
vb 6.0 sp6
追答
那个,VB6和WIN7不是很兼容啊,也许你可以试试更高版本的VB,至于你说的这个问题,应该是WIN7提供的API不太适合VB6用吧,
Const MAX_PATH = 260
试试把这一句写完整,也许有用?
Const MAX_PATH as long = 260
晕,才发现你的WIN7还是64位的,你可以试试VB6生成的EXE运行在兼容模式下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用字符串连接符试试
追问
不能连接的,我问价你的路径是动态获取的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FilePath = @"C:\Users\Administrator\Desktop\sample a.txt"
//试试
//试试
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询