如何从Windows的文件属性对话框的详细信息选项卡中获取信息?
如果在Windows资源管理器中右键单击某个文件并选择属性,会弹出一个对话框,其中包含大量信息。我如何使用C#访问这些信息?如何从Windows的文件属性对话框的详细信息选项卡中获取信息?
具体而言,我正在查找详细信息选项卡上的信息。我主要使用图片,因此“拍摄日期”很重要。我也会和其他文件一起工作,所以有办法获得任何与文件相关的元数据是很好的。
我见过使用Shell32.dll获取这些信息的地方,但是当我尝试引用此库时遇到错误。有另一种方法可以做到这一点,也许通过P/Invoke?
附近有一座小搞乱后,这里是如何得到的图像元数据非常有限的例子。
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更多的信息和搜索的图像元数据规范自己完全写一个。
总是有使用已经处理这个问题的第三方库的选项,但我自己在图像领域没有做太多工作。
你试过FileSystemInfo类吗?
http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.aspx
是的。但它并没有给我我想要的信息。我正在测试的文件在资源管理器中的“常规”选项卡上显示“创建时间:1月 - 24 - 13日上午11:17:30”,但在“详细信息”选项卡上显示“2012/12/09 10:28 PM发生的日期” 。我想我必须稍微更新一下这个问题才能更清楚地说明问题。 – Tester101 2013-02-27 20:54:22
其奇怪的:/可能是pproblem是别的东西或信息是不正确的。因为这些方法获取与文件相关的信息。 – Shaharyar 2013-02-27 21:17:28
当您在代码中使用http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.creationtime.aspx时,它完全返回@ Tester101? – RandomUs1r 2013-02-28 16:31:35
可以使用File
类方法用于此目的:
File.GetCreationTime(filename)
File.GetLastWriteTime(filename)
File.GetLastAccessTime(filename)
//and many more in the intellisense
请参阅对上一个答案的评论以及更新后的问题。 – Tester101 2013-02-27 20:59:55
图像与普通文件不一样。尝试将图像加载到Image对象中,并查看它将为PropertyItems属性输出的内容。我相信它是一个字节数组的集合,因此您需要使用Encoding命名空间从它们获取字符串值。 – Justin 2013-02-27 21:33:31