繁体   English   中英

是否可以使用Windows API代码包设置/编辑文件扩展属性?

[英]Is it possible to set/edit a file extended properties with Windows API Code Pack?

我想知道是否可以使用Windows API代码包设置/编辑文件扩展属性(资源管理器:右键单击>属性>详细信息)。

var shellFile = Microsoft.WindowsAPICodePack.Shell.ShellObject.FromParsingName(filePath);
var artistName = shellFile.Properties.GetProperty(SystemProperties.System.Music.DisplayArtist).ValueAsObject.ToString();
var duration = TimeSpan.FromMilliseconds(Convert.ToDouble(shellFile.Properties.GetProperty(SystemProperties.System.Media.Duration).ValueAsObject) * 0.0001);

我使用以下几行来获取所需的属性,但是我不知道如何编辑其中之一(例如艺术家名称)。 我知道我可以使用taglib-sharp,但是只有在没有外部代码的情况下没有解决方案时,我才会使用它。

谢谢大家花时间帮助我。

我找到了一种使用ShellPropertyWriter编辑某些属性的方法,但是某些属性是只读的。

var shellFile = ShellFile.FromParsingName(filePath);
ShellPropertyWriter w = shellFile.Properties.GetPropertyWriter();
try
{
    w.WriteProperty(SystemProperties.System.Author, new string[] { "MyTest", "Test" });
    w.WriteProperty(SystemProperties.System.Music.Artist, new string[] { "MyTest", "Test" });
    w.WriteProperty(SystemProperties.System.Music.DisplayArtist, "Test");
}
catch (Exception ex)
{

}
w.Close();

在此示例中, ShellPropertyWriter.WriteProperty()ShellPropertyWriter.WriteProperty()将完全相同,请编辑文件的“ Contributing ShellPropertyWriter.WriteProperty() ”字段(资源管理器:右键单击>“属性”>“详细信息”)。 第三次调用将引发“访问被拒绝”异常。 有些是可编辑的,有些则不能。 只需要尝试。

您可以写信给ShellFile直接通过设置属性的值,而不ShellPropertyWriter

var shellFile = ShellFile.FromFilePath(filePath);

shellFile.Properties.System.Author.Value = new string[] { "MyTest", "Test" };
shellFile.Properties.System.Music.Artist.Value = new string[] { "MyTest", "Test" };
shellFile.Properties.System.Music.DisplayArtist.Value = "Test";

请注意,要能够编辑文件的特定于编解码器的字段,必须在计算机上安装编解码器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM