如何从Windows中的文件属性对话框的详细信息选项卡中获取信息?

时间:2013-02-27 20:42:08

标签: c# pinvoke

如果右键单击Windows资源管理器中的文件并选择“属性”,则会弹出一个包含大量信息的对话框。如何使用C#访问此信息?

具体来说,我正在寻找详细信息选项卡上的信息。我主要使用图像,所以“采取日期”非常重要。我也将使用其他文件,因此有一种方法可以获得与文件相关的任何元数据。

我见过使用Shell32.dll提到这些信息的地方,但是当我尝试引用这个库时出错。有没有其他方法可以做到这一点,也许通过P / Invoke?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您可以使用File类方法来实现此目的:

File.GetCreationTime(filename)
File.GetLastWriteTime(filename)
File.GetLastAccessTime(filename)
//and many more in the intellisense

答案 2 :(得分:1)

稍微讨论一下之后,这里有一个非常有限的例子来说明如何获取图像元数据。

var image = System.Drawing.Image.FromFile(@"C:\your\image\here");

        foreach (var a in image.PropertyItems)
        {
            dynamic value;

            switch (a.Type)
                {
                case 2:
                    value = Encoding.ASCII.GetString(a.Value);
                    break;
                case 3:
                    value = BitConverter.ToInt16(a.Value, 0);
                    break;
                case 4:
                    value = BitConverter.ToInt32(a.Value, 0);
                    break;
                default:
                    value = "NaN";
                    break;
                }

            Console.WriteLine("Type: {0} \r\n Value: {1}", a.Type, value);
        }

您可以在Microsoft's site上找到更多信息,并搜索图像元数据规范,以便自己完全编写一个。

总是可以选择使用已经处理过的第三方库,但我自己在图像领域做的工作并不多。