怎样获得一个短文件名的长文件名
编号:QA002568
建立日期: 2000年2月14日 最后修改日期:2001年3月19日
所属类别:
DD:
我在注册表HKEY_CLASSES_ROOT\Directory\Shell中添加MyApp键,再添加MyApp\Command键,command的键值为C:\Myapp\Myapp.exe /add %1. 以便在文件夹中弹出自定义菜单。但调试时发现这样获得的命令行参数是短文件名。我尝试把command的键值改为"c:\Myapp\Myapp.exe" /add "%1",调试时发现参数仍然是短文件名。请问我怎样做才能获得长文件名?
回答:
如果你已经得到一个短文件名,用下面的程序你可以获得长文件名:
Dim sLongName As String
Dim sTemp As String
Dim iSlashPos As Integer
Dim sShortName As String
'Add \ to short name to prevent Instr from failing
sShortName = sFilename & "\"
'Start from 4 to ignore the "[Drive Letter]:\" characters
iSlashPos = InStr(4, sShortName, "\")
'Pull out each string between \ character for conversion
While iSlashPos
sTemp = Dir(Left$(sShortName, iSlashPos - 1), _
vbNormal + vbHidden + vbSystem + vbDirectory)
If sTemp = "" Then
'Error 52 - Bad File Name or Number
LongFilename = ""
Exit Property
End If
sLongName = sLongName & "\" & sTemp
iSlashPos = InStr(iSlashPos + 1, sShortName, "\")
Wend
'Prefix with the drive letter
LongFilename = Left$(sShortName, 2) & sLongName
另外,QA000823 "如何用VB在资源管理器的快捷菜单上添加自己的选项"介绍了利用Shell Extension编写IContextMenu外壳扩展,如果你编写了外壳扩展获得的文件名是长文件名,而且可以同时获得多个选中的文件。
cobe的意见:
GetLongPathName 就可以呀,呵呵。(主持人注:Win98/2000可以使用,Win95/NT不能使用该函数。)
相关问题:
QA001466 "如何获得文件在DOS状态下的短文件名"
此问题由李海回答。
| |
|
|
| |
|
|