2

我有一个允许拖放的图像管理器应用程序。拖入图像时,我执行此行以获取图像的路径和名称。

public bool GetFileName(out string _filename, DrageventArgs E)
{
    _filename = String.Empty;
    Array data = ((System.Windows.Forms.IDataObject)e.Data).GetData("FileName") as Array;
    ...
}

该行来自This article,因此对于我的水平来说它可能太高级了,但它运行得很好,我认为我已经足够了解它的用途。

但是,我在获取正确的图片标题时遇到了问题。我怀疑“文件名”数据可能是原因,因为当拖动一个名为“Phare.jpg”的图像时,我得到的字符串是

"C:\Users\\Public\Pictures\SAMPLE~1\LIGHTH~1.JPG". 

“LIGHTH”位基本上是“phare”,但用英文......至少是第一个字母。也许我没有提取正确的数据?有一个更好的方法吗?我可以尝试提取与“文件名”不同的数据吗?

4

1 回答 1

2

这是从普通文件名构造的8.3 文件名。很可能您用来显示文件名称的任何软件都使用了一些有趣的文件名到显示名称的映射,或者非 8.3 名称与 8.3 名称完全不同是您的情况(dir C:\Users\\Public\Pictures\SAMPLE~1在命令提示符下执行可能会显示实际文件名是什么)。

您应该能够使用System.IO.Path.GetFullPath()将 8.3 文件名映射回常规名称。

您有机会从图像元数据中获取其他语言的图像名称 - 查看Image.PropertyItems

于 2013-03-14T18:19:11.147 回答