热情软件屋

 

怎样获得一个短文件名的长文件名


编号: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状态下的短文件名"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio