【发布时间】:2012-07-09 04:25:37
【问题描述】:
我有一个简短版本或 DOS 格式的路径(例如"C:/DOCUME~1"),并且想要获取它的完整路径/长路径("C :/Documents And Settings" 例如)。
我尝试了 GetLongPathName api。有效。但是当处理 unicode 文件名时,结果却失败了。
Private Declare Function GetLongPathName Lib "kernel32" Alias _
"GetLongPathNameA" (ByVal lpszShortPath As String, _
ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
我尝试为 GetLongPathNameW 取别名,但它似乎什么也没做,对于 Unicode 和非 Unicode 文件名,总是返回 0。在 MSDN 中只有一篇关于 C/C++ 的 GetLongPathNameW 的文章,而不是任何 VB/VBA 的文章。我可以做错什么吗?
这种情况有什么解决办法吗?我在 Google 和 StackOverflow 上花了几个小时,但找不到。
问候,
【问题讨论】:
-
我从文档中注意到 unicode 必须以
\\?\开头,因此您的示例将变为\\?\C:\DOCUME~1 -
@SeanCheshire 感谢您的建议。但是我尝试了几次测试,它根本不起作用。这是结果 strPath = "\\?\" & strPath ?GetLongPathName(strPath, strTemp, 255) 0