我注意到在Windows 7中每个媒体文件的shell属性中,视频文件的持续时间实际上称为“长度”。有人知道使用shell访问长度属性的快捷方法吗?
答案 0 :(得分:2)
所以我找到了一个非常简短快捷的方式来访问"长度"只要您知道该属性的等效索引号,就可以使用媒体文件的shell属性或任何shell属性。
首先需要在项目中向shell32添加一个引用,如下所示:
右键单击项目
点击添加参考
点击添加参考窗口
选择 Microsoft Shell控件和自动化
点击确定
然后在代码隐藏中添加使用Shell32; 。 现在,您可以在foreach循环中使用GetDetailsOf()方法为文件夹中的每个媒体文件提取length属性:
string[] supportedExtensions = new[] { ".mov", ".mp4", ".avi", ".mpeg", ".mpg", ".wmv", ".mkv", ".m4v", ".flv" };
var allFiles = Directory.GetFiles(SelectedFolderPath, "*.*", SearchOption.TopDirectoryOnly).Where(s => supportedExtensions.Contains(System.IO.Path.GetExtension(s).ToLower()));
foreach (string name in allFiles)
{
Shell shell = new Shell();
Folder rFolder = shell.NameSpace(@SelectedFolderPath);
FolderItem rFiles = rFolder.ParseName(System.IO.Path.GetFileName(name));
string videosLength = rFolder.GetDetailsOf(rFiles, 27).Trim();
}
Where," SelectedFolderPath"应该是您要扫描的文件夹,以及您在GetDetailsOf方法中作为参数看到的数字27,是"长度"的索引号。 Shell属性,具体。
所以现在你有一个媒体文件的持续时间在字符串" videosLength"在##:##:##格式。
希望这有帮助! 干杯!